우선순위 큐를 알고있다면 쉽게 풀 수 있는 문제이다.
우선 순위 큐 사용 예시
#include <queue> using namespace std; int main(void) { priority_queue<int> pq;// 큰 값이 우선적으로 top에 있다. priority_queue<int, vector<int>, greater<int>> pq;// 작은 값이 우선적으로 top에 있다. }
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> scoville, int K)
{
priority_queue<int, vector<int>, greater<int>> pq;
int answer = 0;
for(auto c : scoville) pq.push(c);
while (pq.top() < K && pq.size() > 1)
{
int a,b;
a = pq.top(); pq.pop();//가장 안매운
b = pq.top(); pq.pop();//그 다음
pq.push(a + b*2);
answer++;
}
if (pq.top() < K) answer = -1;// 더 섞을 수 없는데 안매운게 존재한다면
return answer;
}