반응형

문제 설명

 

문자열 배열 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;
    }
}
반응형

+ Recent posts