구현 문제입니다.
귤의 크기(tangerine)들과 상자에 담을 개수(k)가 주어집니다.
귤의 크기(key)와 그 개수(value)를 Map에 저장하여, 개수가 많은 순 부터 사용하여 k개를 채우면 끝나는 문제입니다.
[구현 코드]
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Solution {
private Map<Integer, Integer> map;
public int solution(int k, int[] tangerine) {
int answer = 0;
// 크기별로 몇 개 있는지 map에 저장함
map = new HashMap<>();
for (int tan : tangerine) {
map.put(tan, map.getOrDefault(tan, 0)+1);
}
// 개수(value)가 많은 순으로 정렬
List<Map.Entry<Integer, Integer>> entryList = new ArrayList<>(map.entrySet());
entryList.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
// 개수가 많은 순부터 사용
for (Map.Entry<Integer, Integer> entry : entryList) {
if(k<=0) break;
answer++;
k -= entry.getValue();
}
return answer;
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 - 점 찍기(Java) (0) | 2022.12.02 |
---|---|
프로그래머스 - 억억단을 외우자(Java) (0) | 2022.12.01 |
백준 - 1865 웜홀(Java) (0) | 2022.11.30 |
백준 - 5639 이진 검색 트리(Java) (0) | 2022.11.30 |
백준 - 2230 수 고르기(Java) (0) | 2022.11.28 |