728x90
반응형
2022.12.10
코테 문제풀이 21주차 04번 문제
문제
① 연습문제 : 귤 고르기
② 링크
접근방법
생각해낸 방법은 1가지
① Comparator.compare() 메소드를 사용해 HashMap의 Value를 오름차순으로 정렬
풀이
① 접근방법 : ①
② 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
class Solution {
/*
* Date: 2022-12-09
* Time: 13:54
*/
public int solution(int k, int[] tangerine) {
return choiceOrange(k, tangerine);
}
/*
* 메소드명: 귤 고르기
* 1. 귤의 사이즈 별 갯수를 '사이즈=갯수' 형식으로 Map에 담는다.
* 2. Comparator.compare() 메소드를 오버라이딩해서 Map의 Value(갯수)를 내림차순으로 정렬한다.
* 3. 갯수가 많은 순으로 k에서 갯수만큼 뺀다.
* 4. 귤이 담길때마다 담은 횟수를 카운트한다.
*/
public int choiceOrange(int k, int[] tangerine) {
Map<Integer, Integer> map = new HashMap<>();
for (int size: tangerine) {
if (map.containsKey(size)) {
map.put(size, map.get(size)+1);
} else {
map.put(size, 1);
}
}
List<Map.Entry<Integer, Integer>> entryList = new LinkedList<>(map.entrySet());
entryList.sort(new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});
int output = 0;
for (Map.Entry<Integer, Integer> entry : entryList) {
k -= entry.getValue();
output++;
if (k <= 0) break;
}
return output;
}
}
|
cs |
결과
주의사항
① 정답으로 리턴해야 하는 int는 종류의 최솟값이다. 반드시 사이즈별로 갯수가 맞아떨어질 필요가 없다.
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[코테/JAVA] 연습문제 : 다음 큰 숫자 (0) | 2022.12.13 |
---|---|
[코테/JAVA] 연습문제 : 택배상자 (0) | 2022.12.13 |
[코테/JAVA] 연습문제 : 가장 가까운 같은 글자 (0) | 2022.12.10 |
[코테/JAVA] 연습문제 : 점 찍기 (0) | 2022.12.08 |
[코테/JAVA] 연습문제 : 문자열 나누기 (0) | 2022.12.08 |
댓글