반응형
문제 설명
문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.
제한사항
1 ≤ strArr의 길이 ≤ 100,000
- 1 ≤ strArr의 원소의 길이 ≤ 30
- strArr의 원소들은 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
strArr | result |
["a","bc","d","efg","hi"] | 2 |
입출력 예 설명
입출력 예 #1
각 문자열들을 길이에 맞게 그룹으로 묶으면 다음과 같습니다.
문자열 길이 | 문자열 목록 | 개수 |
1 | ["a","d"] | 2 |
2 | ["bc","hi"] | 2 |
3 | ["efg"] | 1 |
풀이
1. 배열을 동적으로 담기 위해 temp라는 배열을 ArrayList로 선언한다. temp 배열에 strArr의 각 원소들의 길이값을 중복없이 담는다.
2. int[] 구조로 temp2 배열을 temp.size()크기로 선언해준다. 이는 strArr의 각 원소들의 길이 값을 가지는 원소가 몇개 있는지 담기 위함이다. 그리고 반복문을 통해서 길이값-1에 해당하는 인덱스의 temp2값을 +1 해준다.
3. temp2의 개수만큼 반복문을 돌리면서 가장 큰값을 answer값에 담는다.
코드
import java.util.*;
class Solution {
public int solution(String[] strArr) {
int answer = 0;
ArrayList<Integer> temp = new ArrayList<>();
for(int i=0;i<strArr.length;i++){
if(!temp.contains(strArr[i].length())){
temp.add(strArr[i].length());
}
}
int[] temp2 = new int[temp.size()];
for(int i=0;i<strArr.length;i++){
temp2[strArr[i].length()-1]++;
}
for(int i=0;i<temp2.length;i++){
if(answer<temp2[i]){
answer = temp2[i];
}
}
return answer;
}
}
반응형
'Algorithm > Programmers 입문' 카테고리의 다른 글
[프로그래머스 코딩기초 트레이닝] 꼬리 문자열(JAVA) (0) | 2024.01.25 |
---|---|
[프로그래머스 코딩기초 트레이닝] 전국 대회 선발 고사(JAVA) (1) | 2024.01.11 |
[프로그래머스 코딩기초 트레이닝] 무작위로 K개의 수 뽑기(JAVA) (0) | 2024.01.04 |
[프로그래머스 코딩기초 트레이닝] 문자열 바꿔서 찾기 (JAVA) (0) | 2023.12.27 |
[프로그래머스 코딩기초 트레이닝] A 강조하기 (JAVA) (1) | 2023.12.07 |