문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/138476

제한 사항

입출력 예

풀이
import java.util.Collections;
import java.util.ArrayList;
import java.util.HashMap;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
HashMap<Integer, Integer> resultMap = new HashMap<>();
ArrayList<Integer> resultList = new ArrayList<>();
for (int i = 0; i < tangerine.length; i++)
resultMap.put(tangerine[i], resultMap.getOrDefault(tangerine[i], 0) + 1);
resultList.addAll(resultMap.values());
Collections.sort(resultList, (i, j) -> j - i);
for (int i = 0; i < resultList.size(); i++) {
k -= resultList.get(i);
answer++;
if (k <= 0) break;
}
return answer;
}
}
후기
그냥 많이 나온 숫자대로 내림차순 정렬해서 k가 0과 같거나 밑으로 내려갔을 때 중단하면 그게 정답이다. 처음에 귤 크기가 1부터 9까지인 줄 알고 배열로 선언해서 풀었는데 컴파일 에러가 나길래 뭐지? 했는데 문제를 다시 보니 크기가 9까지라는 말이 없었다... 즉, 크키가 10 이상인 귤도 있다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 1] 가운데 글자 가져오기 (0) | 2023.08.28 |
|---|---|
| [프로그래머스][JAVA][Lv. 1] 같은 숫자는 싫어 (0) | 2023.08.28 |
| [프로그래머스][JAVA][Lv. 3] 정수 삼각형 (0) | 2023.08.27 |
| [프로그래머스][JAVA][Lv. 1] 나누어 떨어지는 숫자 배열 (0) | 2023.08.27 |
| [프로그래머스][JAVA][Lv. 1] 두 정수 사이의 합 (0) | 2023.08.25 |