//최소한의 종류, 최대한의 개수
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer, Integer> counting = new HashMap<>();
for(int i : tangerine) {
counting.put(i, counting.getOrDefault(i, 0) + 1);
}
List<Integer> valueList = new ArrayList<>(counting.values());
valueList.sort(Collections.reverseOrder());
for (Integer value : valueList) {
k -= value;
answer++;
if(k <= 0) {
break;
}
}
return answer;
}
}
풀이
1. Map으로 크기별 개수를 센다.
2. List로 개수별 sort를 한다. 제일 먼저 오는 크기가 뭔지는 상관없다.
3. 크기별 개수를 차감하면서 몇가지 크기의 종류가 들어왔는지 확인한다.
알게 된 점
- Java의 지역 변수는 초기화하지 않으면 사용할 수 없다는 것을 알게 되었다.
- c++에서는 Map에서 그냥 바로 map[x]++ 같은 형식의 계산이 되었는데 java에서는 있으면 값을 덮어쓰는 느낌으로 해주는 것을 알게 되었다.
느낀점
자바 문법에 익숙해지려면 계속 코딩테스트를 해봐야겠다. 그래도 다행인건 c++에서 해봤던 것들을 검색해서 바로 찾을 수 있는게 다행인 것 같다.
https://school.programmers.co.kr/learn/courses/30/lessons/138476?language=java
'Algorithm > Programmers' 카테고리의 다른 글
[JAVA] 프로그래머스 연속 부분 수열 합의 개수 (0) | 2024.12.02 |
---|---|
[JAVA] 프로그래머스 예상 대진표 (1) | 2024.11.30 |
[JAVA] 프로그래머스 리코쳇 로봇 (0) | 2024.09.10 |
[Java] 프로그래머스 멀리뛰기 (0) | 2024.07.13 |
[C++] 프로그래머스 요격시스템 (0) | 2024.04.03 |