

나의 풀이
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
HashMap<Integer, Integer> map = new HashMap<>();
for (int i : tangerine) { // 1
map.put(i, map.getOrDefault(i, 0) + 1);
}
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet()); // 2
list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
for (Map.Entry<Integer, Integer> entry : list) { // 3
if (k <= 0) break;
answer++;
k -= entry.getValue();
}
return answer;
}
}
과정
- 주어진 int배열 tangerine을 map에 삽입
- list에 내림차순 정렬
- list를 순회하며 k가 0보다 작거나 같으면 break, 그 외엔 answer을 증가시키고, k에 list의 요소를 뺀다
다른 사람 풀이
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
HashMap<Integer,Integer> map =new HashMap<>();
for (int t : tangerine) {
map.put(t, map.getOrDefault(t, 0) + 1);
}
List<Integer> list = new ArrayList<>(map.keySet());
list.sort((o1, o2) -> map.get(o2)-map.get(o1));
for(Integer key:list){
k -=map.get(key);
answer++;
if(k<=0){
break;
}
}
return answer;
}
}