programmers.co.kr/learn/courses/30/lessons/64065
1. 유형
튜플
2. 풀이
- 문자열 파싱
- HashMap<원소의 숫자, 나오는 횟수>
- 횟수 순으로 정렬
- 문자열에 {} 와 콤마가 들어있어서 전처리를 해준다.
- 맨 처음 튜플을 알기 위해서 각 요소에서 숫자가 얼마나 나오는지 확인해야한다.
{{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}
예시에서 2가 4번, 1이 3번, 3이 2번, 4가 1번 즉, 2 1 3 4순서가 정답
- 정렬할 때 우선순위를 정하고 정렬
3. 코드
import java.util.*;
class Solution {
public int[] solution(String s) {
int[] answer = {};
s=s.substring(1, s.length()-1);
String elements[] = s.split("}");
HashMap<Integer, Integer> map = new HashMap<>();
for(String element: elements){
String e[] = element.split("\\{");
for(String tmp: e){
if(tmp.equals(",")) continue;
String num[] = tmp.split(",");
for(String n:num){
if(n.equals(""))continue;
int k = Integer.parseInt(n);
map.put(k, map.getOrDefault(k, 0)+1);
}
}
}
List<int[]> list = new ArrayList<>();
for(Map.Entry<Integer, Integer> entry:map.entrySet()){
list.add(new int[]{entry.getKey(), entry.getValue()});
}
Collections.sort(list, new Comparator<int[]>(){
public int compare(int[] o1, int[] o2){
return -(o1[1] - o2[1]);
}
});
answer = new int[list.size()];
int idx=0;
for(int[] l: list){
answer[idx++] = l[0];
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 영어 끝말잇기 (0) | 2021.04.23 |
---|---|
프로그래머스 - 최솟값 만들기 (0) | 2021.04.13 |
프로그래머스 - 소수 찾기(level2) (0) | 2021.04.04 |
프로그래머스 - 짝지어 제거하기프로그래머스 - 짝지어 제거하기 (0) | 2021.03.30 |
프로그래머스 - 스킬트리 (0) | 2021.03.30 |