코테
[java] 귤 고르기
상똥
2024. 1. 11. 16:50
풀이 |
1. 받은 귤의 크기는 key값으로, 그 크기의 개수를 value값으로 하여 map에 저장한다 - for문으로 배열을 돌면서 map에 넣음 2. answer=0, sum=0을 선언한다 - answer : 크기 종류의 수 - sum : 크기 종류를 추가할 때마다 늘어나는 귤의 총 개수 3. list에 map의 value값들을 넣고, 역순으로 정렬한다 - 개수가 많은 것부터 고려해야 종류의 수가 줄어들 수 있기 때문이다 4. for문으로 sum에 value값들을 큰 것부터 더해가며 k와 비교한다. 동시에 answer도 1씩 증가시킨다 - sum이 k보다 커지면 answer 반환 |
회고 |
- getOrDefault 잊지말자,, |
코드(접은 글) |
더보기
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
Map<Integer, Integer> map = new HashMap<>();
for(int i : tangerine){
map.put(i, map.getOrDefault(i, 0) + 1);
}
int answer = 0;
int sum = 0;
ArrayList<Integer> list = new ArrayList<>(map.values());
Collections.sort(list, Collections.reverseOrder());
for(int l : list){
if(sum + l >= k){
answer++;
break;
} else {
sum += l;
answer++;
}
}
return answer;
}
}