본문으로 바로가기
728x90
반응형

문제

 

 

 

728x90

 


풀이

 

 

 

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
import java.util.*;
import java.util.stream.Collectors;
 
class Solution {
    public int solution(int k, int[] tangerine) {
        List<Integer> arr = Arrays.stream(tangerine).boxed().collect(Collectors.toList()); //list 로 변환
 
        Map<Integer, Integer> freqMap = new HashMap<>(); //귤의 size 가 key, 중복크기 개수가 value
        for (int size : arr) { //arr 에서 하나씩 귤을 뽑음
            freqMap.put(size, freqMap.getOrDefault(size, 0+ 1); //size 로 찾아서 value+1 을 함
        }
 
        List<Integer> freq = new ArrayList<>(freqMap.values()); //value 로만 만든 list
        Collections.sort(freq, Comparator.reverseOrder()); //정렬
        
        int ans = 0//count
        while (k > 0) { //귤 개수가 0 이하로 떨어지면 stop
            k -= freq.get(0); //freq 의 0번째 요소, 즉 가장 높은 중복 귤의 개수
            ans++//count +1
            freq.remove(0); //0번째 요소 제거
        }
 
        return ans;
    }
}
 
cs

 

반응형

 

728x90
반응형