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 |