알고리즘/프로그래머스 Level2

[프로그래머스,Java] Level2:귤 고르기

류창 2022. 11. 24. 20:01

 

문제분석:

 

목표: 여러가지 크기의 귤을 골라서  종류의수가 최소화가 되면 된다.

 

 

정해진 귤의 갯수를 골라서 종류의수가 최소화가 되길 원하니,

 

가장 많은 갯수를가진 종류뷰터 먼저 골라가면 된다.

 

종류마다 갯수를 체크하기위해, Map을 사용하였다.

 

Map으로 귤을 모두 종류마다 담았으면, 가장 높은갯수로 정렬한뒤, 갯수를 빼며 종류수를 체크하자.

 

문제풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.*;
class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        //Key: 크기  , value: 갯수
        Map<Integer,Integer> map = new HashMap<>();
        
        for(int i=0;i<tangerine.length;i++){
            
            int count = map.getOrDefault(tangerine[i],0);
            
            map.put(tangerine[i],count+1);
        }
        
        List<Integer> valueList = new ArrayList(map.values());
        Collections.sort(valueList,Collections.reverseOrder());  
        for(int i=0;i<valueList.size();i++){
            
            k-=valueList.get(i);
            answer++;
            if(k<=0){
                break;
            }
        }
        return answer;
    }
}
cs