프로그래머스 - 더 맵게

phoenixKim·2021년 8월 16일
0

우선순위큐 공부하자!

https://velog.io/@kwt0124/%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84%ED%81%90

풀이전략

  • 가장 작은 친구 + 그 다음 친구 * 2를 추가해야 한고
  • 예외처리로 진행 중, 2번째 친구를 추출해야 하는데 추출못하는 상황
    즉, 첫번째 친구 뺏더니 pq가 empty상황이라면 -1을 반환해야 한다

소스코드

#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>>pq(scoville.begin(), scoville.end());
    
    
    while(pq.top() < K)
    {
        int notHot1 = pq.top();
        pq.pop();
        
        int notHot2 = 0;
        if(!pq.empty())
        {
            notHot2 = pq.top();    
            pq.pop();
        }
        else
        {
            return -1;
        }
        answer++;
        pq.push(notHot1 + notHot2 * 2);
    }
    
    return answer;
}
profile
🔥🔥🔥

0개의 댓글

관련 채용 정보