728x90
이해하기
문제를 보고 Map을 사용해야겠다! 까지는 떠올렸는데 귤의 개수가 많은 순서대로 정렬할 방법이 떠오르지 않았다.
참고한 블로그⬇️
서치해보니 Map에 저장된 value들을 ArrayList로 변환하여 정렬할 수 있다고 한다!
List<Integer> list = new ArrayList<>(map.values());
Collections.sort(list, Collections.reverseOrder());
ArrayList 선언 시 map.values()로 넣어주고, 해당 list를 Collections.sort 해주면 된다.
문제풀이
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int count = 0;
int num = 0;
Map<Integer, Integer> map = new HashMap<>();
for (int tan : tangerine) {
map.put(tan, map.getOrDefault(tan, 0) + 1);
}
List<Integer> list = new ArrayList<>(map.values());
Collections.sort(list, Collections.reverseOrder());
for (int val : list) {
if (num + val >= k) {
count++;
break;
} else {
num += val;
count++;
}
}
return count;
}
}
- HashMap에 각 귤의 크기와 개수를 담는다.
- ArrayList에 map의 value들을 저장한다.
- 내림차순 정렬한다.
- list를 하나씩 순회하며
- 귤의 개수와 해당 리스트의 값을 더했을 때, k와 같거나 커지면 count++ 후 break
- 아직 k보다 작다면 '귤의 개수 += 해당 리스트의 값'으로 업데이트 후 count++
'JAVA > Coding Test Study' 카테고리의 다른 글
[Lv.2] 프로그래머스 - 연속 부분 수열 합의 개수 : Java (0) | 2024.05.30 |
---|---|
[Lv.2] 프로그래머스 - 프로세스 : Java (0) | 2024.05.30 |
[Lv.2] 프로그래머스 - 주차 요금 계산 : Java (0) | 2024.05.30 |
[Lv.2] 프로그래머스 - 의상 : Java (0) | 2024.05.24 |
[Lv.2] 프로그래머스 - 행렬의 곱셈 : Java (0) | 2024.05.24 |