[Programmers / Level2] 138476. 귤 고르기(Java)

이하얀·2024년 8월 31일
0

🕊️ 프로그래머스

목록 보기
38/47

💡 Info




입출력 조건




입출력 예시




문제 이해


  • K개의 귤을 고를 때 크기가 서로 다른 종류 수가 최소가 되도록 하는 문제


알고리즘 및 최종 풀이


풀이 시간 : 15분

  • HashMap으로 귤 크기별 개수를 담기
  • 귤을 내림차순 정렬
  • 다른 종류의 수 최소화 결과 -> k 개수만큼 담아야 함.
    • 귤 개수가 k개 이상인 경우까지 탐색하기
import java.util.*;

/* 알고리즘
- HashMap으로 귤 크기별 개수를 담기
- 귤을 내림차순 정렬
-  다른 종류의 수 최소화 결과 -> k 개수만큼 담아야 함.
    - 귤 개수가 k개 이상인 경우까지 탐색하기
*/

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> keyList = new ArrayList<>(map.keySet());
        keyList.sort((o1, o2) -> map.get(o2) - map.get(o1));

        int i = 0;
        while (i < keyList.size()) {
            if (k <= 0) {
                break;
            }
            answer++;
            k -= map.get(keyList.get(i));
            i++;
        }    
        return answer;
    }
}


결과

profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE 개발 기록 노트☘️

0개의 댓글