‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀
문제 👉 <코딩테스트 연습 - 더 맵게 | 프로그래머스>
1. 문제
- 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 한다.
- 섞은 스코빌 지수 = 가장 낮은 스코빌 지수 + (두 번째로 낮은 스코빌 지수 * 2)
2. 풀이
PriorityQueue
를 이용한 문제 풀이
- 음식의 스코빌 지수를 오름차순으로 유지하기 위해
PriorityQueue
로 나타낸다.
- 음식의 개수가 2개 미만이 되면 더이상 섞을 수 없으므로 -1을 리턴한다.
PriorityQueue
를 통해 제일 작은 스코빌 지수가 K 보다 작으면 음식을 섞고 다시PriorityQueue
에 추가한다.
3. 코드
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>();
for (int s : scoville) pq.offer(s);
while (pq.peek() < K) {
if (pq.size() < 2) return -1;
pq.offer(pq.poll() + (pq.poll() * 2));
answer++;
}
return answer;
}
}
References
🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스] 디스크 컨트롤러 [JAVA(자바)] (1) | 2021.11.25 |
---|---|
[프로그래머스] 프린터 [JAVA(자바)] (0) | 2021.11.25 |
[프로그래머스] 기능개발 [JAVA(자바)] (0) | 2021.11.25 |
댓글