말하는 컴공감자의 텃밭

프로그래머스 귤 고르기 <2점> - 자바(java) HashMap 본문

알고리즘/Programmers - Java

프로그래머스 귤 고르기 <2점> - 자바(java) HashMap

현콩 2023. 7. 6. 23:29
728x90

겨울을 기다리는 이유

귤귤귤~ 귤이 사이즈별로 주어진다.

판매할때 상품성을 위해서 사이즈의 종류가 적은 값을 출력하면 되는문제!

 

결국 사이즈별로 개수를 정리하고 개수를 더해서 k랑 같을때까지 반복하면 되는 문제겠네오.

다만 범위가 워낙에 커서 O(n) 관리를 잘 해줘야 합니다.

 

먼저 HashMap으로 중복 없이 귤의 개수를 파악하고, 개수가 많은거부터 더해야 하니까 내림차순으로 정리.

이후 k가 맞으면 answer ++해서 출력하면 되겠숩니당.

 

 

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
28
29
30
31
32
33
34
35
import java.util.*;
 
class Solution {
    public static int solution(int k, int[] tangerine) {
 
        Map<Integer, Integer> map = new HashMap<>(); // 사이즈 별 개수를 알기위해, 중복방지로 HashMap
 
        for (int t : tangerine) { 
            map.put(t, map.getOrDefault(t, 0+ 1); // t가 없으면 0 삽입.
        }
 
        int sum = 0;
        int ans = 0;
        
        List<Integer> frequencyList = new ArrayList<>(); //
 
 
        for (int frequency : map.values()) {
            frequencyList.add(frequency); // map값 내림차용으로 리스트 복사
        }
 
        Collections.sort(frequencyList, Collections.reverseOrder()); // 내림차순 정렬
 
        for (int frequency : frequencyList) { 
            ans++
            sum += frequency;
            if (sum >= k) { // k값이 될때까지 연산.
                break;
            }
        }
 
        return ans;
    }
}
 
cs

 

728x90
Comments