본문 바로가기

프로그래머스(Java)/Level 2

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

728x90

 

문제 풀이 힌트

  • 결과를 저장할 변수 (result) 초기화:
    • 몇 가지 종류의 귤을 사용했는지 저장하는 변수입니다.
  • HashMap을 사용하여 귤의 크기별 개수를 세기 (map):
    • map은 귤의 크기(size)를 키로 하고, 해당 크기의 귤 개수(count)를 값으로 저장합니다.
    • getOrDefault(size, 0)는 size가 map에 없을 경우 0을 반환하여, 처음 등장하는 귤 크기는 개수를 1로 시작합니다.
  • 귤의 크기 리스트 생성 (keySet) 및 내림차순 정렬:
    • keySet은 map의 키를 리스트로 변환한 것입니다.
    • sort 메서드를 사용하여 귤의 개수를 기준으로 내림차순 정렬합니다.
  • 많은 개수의 귤 크기부터 순서대로 k에서 빼기:
    • for 루프를 사용하여 keySet을 순회하며, 각 크기의 귤 개수를 k에서 뺍니다.
    • 한 종류의 귤을 사용할 때마다 result를 1씩 증가시킵니다.
    • k가 0 이하가 되면 루프를 종료합니다.
  • 최소 종류의 귤 개수를 반환:
    • 결과로 result를 반환합니다.

 


정답은 더보기 클릭

더보기
import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        // 결과를 저장할 변수
        int result = 0;
        
        // 귤의 크기와 해당 크기의 개수를 저장할 HashMap
        HashMap<Integer, Integer> map = new HashMap<>();
        
        // 귤의 크기별로 개수를 세어 HashMap에 저장
        for (int size : tangerine) {
            map.put(size, map.getOrDefault(size, 0) + 1);
        }
        
        // HashMap의 키(귤의 크기) 리스트 생성
        List<Integer> keySet = new ArrayList<>(map.keySet());
        
        // 귤의 개수를 기준으로 내림차순 정렬
        keySet.sort((size1, size2) -> map.get(size2) - map.get(size1));
        
        // 많은 개수의 귤 크기부터 순서대로 k에서 뺌
        for (Integer size : keySet) {
            k -= map.get(size);
            result++;
            // k가 0 이하가 되면 종료
            if (k <= 0) {
                break;
            }
        }
        
        // 최소 종류의 귤 개수를 반환
        return result;
    }
}

 

728x90

'프로그래머스(Java) > Level 2' 카테고리의 다른 글

[프로그래머스] 주식가격  (0) 2024.07.26
[프로그래머스] 더 맵게  (0) 2024.07.16
[프로그래머스] 프로세스  (1) 2024.07.15
[프로그래머스] 멀리뛰기  (0) 2024.07.12
[프로그래머스] 의상  (0) 2024.07.09