성능 요약
- 메모리: 98.7 MB, 시간: 46.69 ms
구분
- 코딩테스트 연습 > 구현
Answer Code1(2023.03.08)
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Collections;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
// 크기별로 몇 개 있는지 map에 저장함
for (int tan : tangerine) {
map.put(tan, map.getOrDefault(tan, 0)+1);
}
// 개수(value)가 많은 순으로 정렬
List<Integer> list = new ArrayList<>(map.values());
Collections.sort(list, Collections.reverseOrder());
// 개수가 많은 순부터 사용
for (Integer a : list) {
if(k < 1)
return answer;
k -= a;
answer++;
}
return answer;
}
}
문제 풀이 - Answer Code1
-
귤의 크기(key)와 개수(value)를 Map에 저정한 다음, 개수가 많은 순부터 사용하여 k개를 채우면 되는 문제였다.
-
HashMap()의
getOrDefault(key, defaultValue)
는 지정된 key의 값(객체)을 반환한다. key가 없으면 지정된 defaultValue로 지정된 객체를 반환한다.