티스토리 뷰
문제
2019 카카오 인턴십 - 튜플
풀이
- 주어진 튜플에 많이 등장하는 순서대로 숫자 배열을 만들어 리턴해야한다
- 튜플에 중복이 허용되지 않기 때문에 map에 key값으로 튜플의 원소 값을 넣고 value로 빈도수를 계산해 정렬해서 사용했다
- sortByValue()는 map의 value를 기준으로 내림차순으로 정렬하여 반환하는 함수이다
- Map.Entry<K, V> : key와 value로 하나의 쌍을 이루는 map entry자료형
- map.entrySet() : key와 value를 묶어 Set 형식으로 반환한다
public static int[] solution(String s) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
String[] arr = s.split(",");
for(int i=0; i<arr.length; i++) {
arr[i] = arr[i].replace("{", "");
arr[i] = arr[i].replace("}", "");
map.put(arr[i], map.getOrDefault(arr[i], 0)+1);
}
List<Map.Entry<String, Integer>> result = sortByValue(map);
int[] answer = new int[map.size()];
for(int i=0; i<result.size(); i++)
answer[i] = Integer.parseInt(result.get(i).getKey());
return answer;
}
// [2=4, 1=3, 3=2, 4=1] 반환
static List<Map.Entry<String, Integer>> sortByValue(HashMap<String, Integer> map) {
List<Map.Entry<String, Integer>> entries = new LinkedList<Map.Entry<String,Integer>>(map.entrySet());
Collections.sort(entries, (o1, o2)-> o2.getValue().compareTo(o1.getValue()));
return entries;
}
'Algorithm' 카테고리의 다른 글
[Algorithm] 백준 1167 트리의 지름 (0) | 2020.10.12 |
---|---|
[Algorithm] 백준 5577 회전초밥 - 슬라이딩윈도우 (0) | 2020.09.09 |
[Algorithm] 2018 카카오 공채 - n진수 게임 (10진수를 n진법 수로 변환하기) (0) | 2020.08.28 |
[Algorithm] 프로그래머스 2019 카카오 공채 - 후보키 (비트마스크) (0) | 2020.08.27 |
[Algorithm] 백준 1753 최단경로 - 다익스트라 알고리즘 (0) | 2020.06.16 |