ALGORITHM/PROGRAMMERS

[프로그래머스] 튜플 (2019 카카오 개발자 겨울 인턴십)

0298 2021. 3. 7. 22:40

programmers.co.kr/learn/courses/30/lessons/64065

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

2021-03-07


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
29
30
31
32
33
34
35
import java.util.*;
import java.util.Map.Entry;
 
public class Solution64065 {
    public static int[] solution(String s) {
        Map<String, Integer> map = new HashMap<>(); // 나온 숫자들 카운트 저장하는 map
        s = s.replace("{""").replace("}"""); // '{' 와 '}' 제거
        String[] tmp = s.split(",");
        for (String p : tmp) {
            if (map.containsKey(p)) map.put(p, map.get(p) + 1);
            else map.put(p, 1);
        }
 
        List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); // 정렬
        Collections.sort(list, new Comparator<>() {
            @Override
            public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                return o2.getValue().compareTo(o1.getValue());
            }
        });
        int[] answer = new int[Collections.max(map.values())];
        int idx = 0;
        for(Entry<String, Integer> m: list) {
            answer[idx++= Integer.parseInt(m.getKey());
        }
 
        return answer;
    }
 
    public static void main(String[] args) {
        String s = "{{2},{2,1},{2,1,3},{2,1,3,4}}";
//        String s = "{{123}}";
        System.out.println(Arrays.toString(solution(s)));
    }
}
cs

#문제풀이

 

나온 숫자들의 개수를 카운팅 해준 후 큰 수 부터 차례대로 출력하면 된다.