프로그래머스 - 귤 고르기 문제를 풀다가 궁금증이 생겨서 알아보았다.
결론은 list.sort(Compartor.naturalOrder())
와 Collections.sort(list)
는 같은 결과를 출력한다.
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
for(int i=0; i<tangerine.length; i++){
map.put(tangerine[i], map.getOrDefault(tangerine[i], 0) +1);
}
List<Integer> list = new ArrayList<>(map.keySet());
list.sort((o1, o2) -> map.get(o2) - map.get(o1)); //list.sort() 사용
int i=0;
while(k>0){
k -= map.get(list.get(i));
answer++;
i++;
}
return answer;
}
}
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
for(int i=0; i<tangerine.length; i++){
map.put(tangerine[i], map.getOrDefault(tangerine[i], 0) +1);
}
List<Integer> list = new ArrayList<>(map.keySet());
Collections.sort(list, new Comparator<Integer>() { //Collections.sort() 사용
@Override
public int compare(Integer o1, Integer o2) {
return map.get(o2) - map.get(o1);
}
});
int i=0;
while(k>0){
k -= map.get(list.get(i));
answer++;
i++;
}
return answer;
}
}