자이의 프로그래밍
더 맵게 본문
우선순위 큐를 사용해 비교적 간단하게? 해결했다!
priority_queue를 선언한 뒤, 무한 반복문 내부에서 break 조건이 맞으면 빠져나가는 방식으로 진행했다.
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> scoville, int K) {
int answer = 0;
priority_queue <int, vector <int>, greater<int>> q;
for(int i=0; i<scoville.size(); i++){
q.push(scoville[i]);
}
while(true){
//음식을 섞다가 제일 덜 매운 음식의 스코빌 지수가 K 이상이 될 때 break
//모두 섞었는데도 불구하고 스코빌 지수가 K 미만일 경우 break
int min1= q.top();
q.pop();
if(min1>=K) break;
else if(q.empty()){
answer=-1;
break;
}
int min2=q.top();
q.pop();
q.push(min1+2*min2);
answer++;
}
return answer;
}