728x90
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
종류 수를 최소화 > 개수 많은 크기부터 채우기
#예시
k=4, [1, 3, 2, 5, 4, 5, 2, 3]
1.크기별 개수 구하기 > 해쉬맵 이용
[1,1], [2,2], [3,2], [4,1], [5,2]
2.개수만 뽑아서 내림차순하기 : 크기 필요X
2, 2, 2, 1, 1
3.k개 이상 채우기
#HashMap 관련 함수
getOrDefault(key, defaultValue) : key가 있으면 해당 값 반환하고 없으면 기본값(defaultValue) 반환
put(key, value) : 값 넣기 (덮어쓰기)
get(key) : 값 가져오기
containsKey(key) : 키 존재 여부 확인
keySet() : 모든 키
values() : 모든 값
entrySet() : 키, 값 한 번에
size()
-정답 코드
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer, Integer> cnt = new HashMap<>(); // 크기별 개수 저장
for(int t : tangerine){
cnt.put(t, cnt.getOrDefault(t, 0)+1);
}
// 개수만 뽑아내기
ArrayList<Integer> list = new ArrayList<>(cnt.values());
// 개수 내림차순
list.sort(Collections.reverseOrder());
//k개 채우기
int sum=0;
for(int l : list){
sum+=l;
answer++;
if(sum >= k){
//k개 이상 채운 경우 종료
break;
}
}
return answer;
}
}'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] 오픈채팅방 : Java (0) | 2026.02.03 |
|---|---|
| [Lv.2] 영어 끝말잇기 : Java (0) | 2026.02.03 |
| 💚[Lv.2] 짝지어 제거하기 : Java (0) | 2026.01.30 |
| [Lv.2] 다음 큰 숫자 : Java (0) | 2026.01.30 |
| [Lv.2] 이진 변환 반복하기 : Java / 이진법 변환 함수 (0) | 2026.01.30 |