Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

David의 블로그

프로그래머스 - 문자열 묶기 본문

프로그래밍/코딩

프로그래머스 - 문자열 묶기

David 리 2024. 6. 23. 14:16

문제 설명>

문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 

그룹의 크기를 return 하는 solution 함수를 완성해 주세요.

 

내 생각>

처음에는 bubleSort처럼 2중 반복문으로 원소의 길이가 같은 값을 가공해서 진행해야 겠다고 생각했지만,

이는 곧 어떻게 길이그룹을 정해줄지 하다가 막혔다.

그래서 생각해낸것이 Collection 프레임워크를 이용하기로 했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 문자열 묶기
        // ["a","bc","d","efg","hi"]        2
        String[] strArr = {"a","bc","d","efg","hi"};
        int answer = 0;
        
        for (int i = 0; i < strArr.length; i++) {
            strArr[i] = strArr[i].length()+"";
        }
        
        List<String> strList = new ArrayList<String>(Arrays.asList(strArr));
        List<Integer> res = new ArrayList<>();
 
        Set<String> set = new HashSet<String>(strList);
        
        for (String item : set) {
//            System.out.println(item + " : " + Collections.frequency(strList, item));
            res.add(Collections.frequency(strList, item));
        }
        answer = Collections.max(res);
        System.out.println(answer);
cs

먼저 Stgring배열의 strArr을 원소길이로 초기화 해줬다.

이는 원소 길이가 같은 그룹을 구별하기 위해서 진행했다.

다음 Collections.frequency()를 이용해서 그룹화된 원소의 개수를 res라는 ArrayList<Integer>에 추가해줬다.