-
728x90
[ 풀이 방법 ]
1. 각 숫자가 나온 횟수를 HashMap에 저장
2. 횟수(value)를 기준으로 키를 내림차순 정렬
3. List(keySet)를 int배열(answer)로 바꿔서 리턴!
[ 전체 코드 ]
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.StringTokenizer; class Solution { public static int[] solution(String s) { // 숫자만 자르기 StringTokenizer st = new StringTokenizer(s, "},{"); // 숫자가 나온 횟수 세기 HashMap<Integer, Integer> num = new HashMap<Integer, Integer>(); while (st.hasMoreTokens()) { int n = Integer.parseInt(st.nextToken()); num.put(n, num.containsKey(n) ? num.get(n) + 1 : 1); } // 횟수기준 내림차순 정렬 List<Integer> keySet = new ArrayList<Integer>(num.keySet()); Collections.sort(keySet, (v1, v2) -> (num.get(v2) - num.get(v1))); int[] answer = new int[keySet.size()]; for (int i = 0; i < keySet.size(); i++) answer[i] = keySet.get(i); return answer; } }
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[level2] 프로그래머스 - 순위 검색(JAVA) (0) 2021.09.12 [level2] 프로그래머스 - 멀쩡한 사각형(JAV) (0) 2021.09.11 [level2] 프로그래머스 - 수식 최대화(JAVA) (0) 2021.09.10 [level2] 프로그래머스 - [1차] 뉴스 클러스터링(JAVA) (0) 2021.09.09 [level2] 프로그래머스 - 거리두기 확인하기(JAVA) (1) 2021.09.09 댓글