
-Code
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
// 값을 map으로 count
for (int el : tangerine) {
map.put(el, map.getOrDefault(el, 0) + 1);
}
List<Integer> keySet = new ArrayList<>(map.keySet());
// 가장 많이 가지고 있는 크기의 사과 부터 갯수 빼기 위한 정렬
keySet.sort((o1, o2) -> map.get(o2) - map.get(o1));
// 양이 가장 많은 것부터 빼기
for (int key : keySet) {
// 보내야할 갯수 초과시
if (k <= 0) break;
k -= map.get(key);
answer++;
}
return answer;
}
}
처음에는 조합 문제인줄 알고 다시 확인해보니 그냥 큰 갯수부터 빼주면 되는 문제였습니다. map의 value값을 기준으로 역순 정렬해야하는데 그 방법에 대해서 찾아서 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 34691번 대전과학고등학교를 사랑하십니까? (0) | 2025.11.19 |
|---|---|
| [프로그래머스/Java] 카펫 (0) | 2025.11.18 |
| [백준/Java] 10426번 기념일 2 (0) | 2025.11.18 |
| [LeetCode/Java] 14. Longest Common Prefix (0) | 2025.11.18 |
| [LeetCode/Java] 13. Roman to Integer (0) | 2025.11.18 |