728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/138476
해설
문제에서 귤의 크기와 상관없이 크기의 종류가 최소일 때 담으려는 귤의 수를 원하기 때문에
- 같은 크기인 귤의 수를 구하고
- 내림차순 정렬해주어 k개만큼 귤을 넣었을때 종류의 수를 return
으로 해결할 수 있는 문제입니다.
tangerine의 원소의 범위가 길어 배열의 정렬은 시간초과가 날 수 있어 Map을 사용해 특정 크기의 귤 수를 구하고 해당 값으로 List를 만들어 정렬 후 for문을 통해 종류별로 k에서 각 귤의 수를 빼가며 0이하일 때의 종류를 구합니다.
주의점
- tangerine의 원소의 범위는 1 ~ 10,000,000
코드
import java.util.*;
class Solution {
public int solution(int k, int[] tangerine) {
int answer = 0;
Map<Integer, Integer> m = new HashMap<>();
for(int t : tangerine){
m.put(t,m.getOrDefault(t,0)+1);
}
List<Integer> counter = new ArrayList<>(m.keySet());
counter.sort((o1,o2) -> m.get(o2).compareTo(m.get(o1)));
for(int key: counter){
answer++;
k -=m.get(key);
if(k<=0) break;
}
return answer;
}
}
728x90
'[IT] 코딩테스트 > [문제 및 풀이] 프로그래머스' 카테고리의 다른 글
[프로그래머스] 할인 행사 / 자바(Java) (0) | 2023.09.06 |
---|---|
[프로그래머스] 연속 부분 수열 합의 개수 / 자바(Java) (0) | 2023.09.05 |
[프로그래머스] 롤케이크 자르기 / 자바(Java) (0) | 2023.09.01 |
[프로그래머스] 점 찍기 / 자바(Java) (0) | 2023.08.31 |
[프로그래머스] 테이블 해시 함수 / 자바(Java) (0) | 2023.08.30 |