728x90
https://school.programmers.co.kr/learn/courses/30/lessons/138476
Map에 귤 크기 별로 개수를 저장한다
그리고 이를 value 기준으로 정렬하는데, Comparator 인터페이스를 통해 오버라이딩해서 정렬 기준을 value로 잡는다
Map의 keySet을 불러서 Comparator로 정렬하고, 큰 값부터 빼가면서 k개가 되면 return 한다
Comparator 사용법만 알면 어렵지 않게 구현할 수 있었던 문제였다! (물론 난 몰랐음^^;)
자바 코드)
import java.util.*;
class Solution {
static Map<Integer, Integer> map = new HashMap<>();
public int solution(int k, int[] tangerine) {
int answer = 0;
for(int t : tangerine) {
map.put(t, map.getOrDefault(t, 0) + 1);
}
List<Integer> keys = new ArrayList<>(map.keySet());
Collections.sort(keys, new comparator());
for(int key : keys) {
if(k <= 0) {
break;
}
answer++;
k -= map.get(key);
}
return answer;
}
public class comparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return map.get(o2).compareTo(map.get(o1));
}
}
}
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[DP] 정수 삼각형 - JAVA (version 2) (0) | 2023.03.14 |
---|---|
[DP] N으로 표현 - JAVA (version 2) (0) | 2023.03.10 |
[연습 문제] 디펜스 게임 - JAVA (0) | 2022.12.19 |
[완전탐색] 모음사전 - JAVA (0) | 2022.12.15 |
[연습문제] 롤케이크 자르기 - JAVA (0) | 2022.11.27 |
댓글