본문 바로가기
Beakjoon&프로그래머스/Java

[프로그래머스/Java] 귤 고르기

by 현장 2025. 11. 18.

-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값을 기준으로 역순 정렬해야하는데 그 방법에 대해서 찾아서 해결했습니다.