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

조예빈·2024년 8월 3일
0

Coding Test

목록 보기
93/138

https://school.programmers.co.kr/learn/courses/30/lessons/138476

HashMap에 각각 수확한 귤 크기, 크기의 개수를 저장한 후 value를 중심으로 정렬 해 준다. 이후, sum값이 k값보다 작을 때 까지 더해주면 된다. 이 때, value값보다 list.get(i).getValue 값이 더 클 때에는 break를 걸 수 있도록 if문을 먼저 수행해야 한다.

import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        //k : 상자에 담으려는 귤의 개수
        //tangerine : 귤의 크기
        //귤의 다른 종류의 수
        //우선 HashMap에 저장한 후 큰 순서대로 get
        
        HashMap<Integer, Integer> map = new HashMap<>();
        for(int i=0; i<tangerine.length; i++){
            if(!map.containsKey(tangerine[i])){
                map.put(tangerine[i], 1);
            }else{
                map.put(tangerine[i], map.get(tangerine[i])+1);
            }
        }
                
        List<Map.Entry<Integer, Integer>> list = new LinkedList<>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>(){
            @Override
            public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2){
                return o2.getValue() - o1.getValue();
            }
        });
        
        int sum = 0;
        int answer = 0;
        for(int i=0; i<list.size(); i++){
            if(sum >= k){
                break;
            }
            answer ++;
            sum = sum + list.get(i).getValue();
        }
        return answer;
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글