
풀이과정
- HashMap을 활용해 귤 사이즈별 개수를 저장합니다.
- ArrayList에 귤 사이즈를 담습니다.
- 귤 개수가 많은 사이즈순으로 정렬합니다.
- 서로 다른 사이즈를 최소화하기 위해, 가장 많은 개수를 가진 사이즈를 k에서 뺍니다.
- k가 0이하가 될 때까지 귤 개수를 빼주면서, 귤 종류를 answer에 +1 합니다.
- k가 0 이하가 되었을 때의 answer을 return 합니다.
전체 코드
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer,Integer> tan = new HashMap<>(); //귤 사이즈별 개수
ArrayList<Integer> sizeTan = new ArrayList<>(); //귤 사이즈
for(int i:tangerine) //크기별로 몇개 있는지 넣기.
tan.put(i,tan.getOrDefault(i,0)+1);
for(int i:tan.keySet()) //어떤 사이즈가 있는지 넣기.
sizeTan.add(i);
//사이즈별 개수가 많은 순서로 정렬
Collections.sort(sizeTan, new Comparator<Integer>(){
@Override
public int compare(Integer a, Integer b){
return tan.get(b)-tan.get(a);
}
});
int now=0;
while(k>0){
//개수가 제일 많은 사이즈의 개수를 모두 빼기
k-=tan.get(sizeTan.get(now));
now++;
answer++; //종류 개수 한개 추가
}
return answer;
}
}'Algorithms(CT)' 카테고리의 다른 글
| [프로그래머스][Java] Lv.3 입국심사 (0) | 2023.06.18 |
|---|---|
| [프로그래머스][Java] Lv.2 괄호 회전하기 (0) | 2023.06.16 |
| [프로그래머스][Java] Lv.2 멀리 뛰기 (0) | 2023.06.14 |
| [프로그래머스][Java] Lv.2 N개의 최소공배수 (0) | 2023.06.14 |
| [프로그래머스][Java] Lv.3 아이템 줍기 (0) | 2023.06.14 |