문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/138476
풀이 참고 : https://devmoony.tistory.com/170
- 귤의 종류와 그 개수들을 HashMap에 저장
- 종류가 뭔지 알 필요 없으므로(갯수만 알면 됨), map의 value들을 list에 저장
- list를 크기순(갯수순)으로 내림차순 정렬
- 개수가 제일 많은 것부터 k 차감
- 개수의 종류가 바뀔 때 answer는 1씩 증가
- k가 0보다 작거나 같으면 종료
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Arrays.sort(tangerine);
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < tangerine.length; i++) {
if(map.get(tangerine[i]) == null) map.put(tangerine[i], 1);
else map.put(tangerine[i], map.get(tangerine[i]) + 1);
}
List<Integer> list = new ArrayList<>();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
list.add(entry.getValue());
}
Collections.sort(list, Collections.reverseOrder());
for(int i = 0; i < list.size(); i++) {
k -= list.get(i);
answer++;
if(k <= 0) break;
}
return answer;
}
}