pop 할 때는 조심히 하자. 굳이 비어있을때만을 조건의 끝으로 보지 않아도 된다. 좀 더 쉽게 접근해도 괜찮다. 그게 오히려 잘만든거임
#include <string>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int solution(vector<int> scoville, int K) {
int answer = 0;
priority_queue<int, vector<int>, greater<int>> pq(scoville.begin(), scoville.end());
while(pq.size() > 1 && pq.top() < K)
{
int one = pq.top();
pq.pop();
if(one >= K )
{
break;
}
int two = pq.top();
pq.pop();
int newS = one + (two +two);
pq.push(newS);
answer++;
}
if(pq.top() < K)
{
answer = -1;
}
return answer;
}
'코딩 테스트' 카테고리의 다른 글
프로그래머스 - 구명보트 (0) | 2024.08.23 |
---|---|
프로그래머스 - 스킬트리 (0) | 2024.08.22 |
프로그래머스 - 예상 대진표 (0) | 2024.08.07 |
프로그래머스 - 네트워크 (bfs, dfs or union-find) (0) | 2024.07.26 |
백준 1246 (0) | 2024.06.12 |