import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
Map<Integer, Integer> map = new HashMap<>();
for (int i : tangerine) {
if (!map.containsKey(i)) {
map.put(i,1);
} else {
int a = map.get(i);
map.put(i,a+1);
}
}
List<Integer> list = new ArrayList<>(map.values());
Collections.sort(list,(a,b)->b-a);
int answer=0;
for (int i : list) {
System.out.println(i);
if (k<=0) {
return answer;
}
k-=i;
answer++;
}
return answer;
}
}
설명하자면
1. tangerine에서 값을 가져와서 map 형태로 구성해준다.
2.종류마다 개수가 몇개인지 확인한 후 이를 리스트로 변환하여 내림차순으로 정렬 해준다.
3.이후 리스트에서 큰 값부터 꺼내면서 k에서 값을 빼주는데 이 때 k가 0이 되면 다 구매한 것으로 return하면 된다.
다른 분들은 map.contains로 확인 하지 않고 map.getOrDefault로 처리하였다.
출처 : 프로그래머스 알고리즘 귤고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476>