-
[Programmers] 귤 고르기 / ⭕Algorithm/Programmers 2024. 7. 24. 19:51
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 제출 코드 (10분 23초 / Dictionary, Sort)
import java.util.*; class Solution { public int solution(int k, int[] tangerine) { int answer = 0; PriorityQueue<int[]> pq = new PriorityQueue<>((o1, o2) -> { return o2[1] - o1[1]; }); Map<Integer, Integer> list = new HashMap<>(); for(int i = 0; i < tangerine.length; i++) { list.put(tangerine[i], list.getOrDefault(tangerine[i], 0) + 1); } for(Integer key : list.keySet()) { pq.add(new int[] {key, list.get(key)}); } int temp = 0; while(temp < k) { temp += pq.poll()[1]; answer++; } return answer; } }
2. 구현 로직
- 귤 사이즈마다의 개수를 카운트 (딕셔너리 사용)
- 개수가 많은 것부터 채워 넣으면 되므로 우선순위 큐를 이용하여 정렬
- 우선순위 큐에서 1개 뺀 것을 임시 바구니에 담고 k와 비교
- k개보다 작다면 반복하고 크다면 반복문을 종료하고 정답 추출
3. 유의할 점
- 귤의 개수를 딱 맞춰야 하는 줄 알았는데 굳이 그럴 필요가 없다는 것을 알았다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 연속 부분 수열 합의 개수 / ⭕ (0) 2024.10.03 [Programmers] 택배 배달과 수거하기 / ❌ (1) 2024.10.02 [Programmers] 마법의 엘리베이터 / ⭕ (1) 2024.07.23 [Programmers] 시소 짝꿍 / ❌ (0) 2024.07.21 [Programmers] 뒤에 있는 큰 수 찾기 / ❌ (0) 2024.07.20