- 회고
83. 귤 고르기 : https://school.programmers.co.kr/learn/courses/30/lessons/138476
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
Map<Integer, Integer> map = new HashMap<>();
for (int i : tangerine) {
if(!map.containsKey(i)){
map.put(i, 1);
}else{
map.put(i, map.get(i) + 1);
}
}
List<Map.Entry<Integer, Integer>> entryList
= new ArrayList<>(map.entrySet());
entryList.sort(Map.Entry.comparingByValue());
int i = entryList.toArray().length - 1;
int n = 0;
while(k > 0){
int a = entryList.get(i).getValue();
k -= a;
n++;
if(i != 0){
i--;
}else{
break;
}
}
return n;
}
}
- 풀이 과정
- Map을 사용하여 각 크기별 귤의 개수를 구한다.
- Map.Entry를 사용하여 List로 변환한다.
- List.sort를 사용하여 정렬한다.
- 개수가 많은 귤의 개수를 담아야하는 귤의 개수 k에서 빼주면서
- 귤을 담았으면 종류(n)를 1 증가시킨다.
- k가 0보다 작아지면 구한 n을 반환한다.
- 회고
- 귤의 개수를 k에 맞추려고해서 실패하는 경우가 발생(k이상이면 바로 반환)
- 성능이 매우 안좋은거같아 다른사람의 풀이를 참고
- Map.entry 학습 필요
- 진행
일자 | 완료 번호 |
24.07.16 ~ 24.07.31 | 1~63 |
24.08.01 ~ 24.08.20 | 64~75 |
24.08.21 | 76 |
24.08.23 | 77 |
24.08.27 | 78 |
24.08.29 | 79 |
24.08.30 | 80 |
24.09.06 | 81 |
24.09.10 | 82 |
09.12 | 83 |
'Java & Spring > 코딩테스트' 카테고리의 다른 글
[백준] Java - 1018번 : 체스판 다시 칠하기 (1) | 2024.11.29 |
---|---|
52일차 - 알고리즘 코드카타(실패) (1) | 2024.10.01 |
42일차 - 알고리즘 코드카타 (0) | 2024.09.11 |
39일차 - 알고리즘 코드카타 (0) | 2024.09.06 |
34일차 - 알고리즘 코드카타 (0) | 2024.08.30 |