Algorithm
[알고리즘] 프로그래머스 - 더 맵게(힙)
byeongoo
2020. 8. 18. 00:46
1. 문제
2. 문제 풀이
스코빌지수가 가장 낮은 2개의 음식을 뽑아서 새로운 음식을 만들어서 우선순위 큐에 계속 넣어주고, 가장 스코빌지수가 낮음 음식이 주어진 K와 같거나 커지면 몇번만에 K 이상으로 만들었는지 반환해주는 간단한 문제였다. 코드를 보면 크게 설명할게 없다는 것을 알 수 있다.
import java.util.*;
class Solution {
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
int answer = 0;
public int solution(int[] scoville, int K) {
for(int i=0;i<scoville.length;i++){
priorityQueue.add(scoville[i]);
}
while(true){
answer++;
int size = priorityQueue.size();
if(size == 1){
answer = -1;
break;
}
int x = priorityQueue.poll();
int y = priorityQueue.poll();
int mixScoville = x + y*2;
priorityQueue.add(mixScoville);
int frontScoville = priorityQueue.peek();
if(K <= frontScoville){
break;
}
}
return answer;
}
}