(프로그래머) spicier C++(우선순위 큐 priority_queue)

https://school.programmers.co.kr/learn/courses/30/lessons/42626

문제 이해

매운맛에 대한 Scoville 벡터와 표준 매운맛에 대한 K가 제공됩니다.

scvill의 모든 요소가 K보다 크거나 같도록 하려면 두 번째로 작은 요소에 2를 곱하고 가장 작은(가장 매운) 요소에 더합니다.

이것이 일어나는 횟수를 출력하시오. 모든 요소가 K를 초과하지 않으면 -1을 출력합니다.

해결 + 코드

해결하려면 우선 순위 대기열을 사용하십시오. top() 사용을 단순화하려면 작은 순서로 정렬하십시오.

priority_queue 사용보다 큰>, 작은 것부터 작은 것까지 정렬합니다.

#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.size() > 1 && pq.top() < K){
        int one = pq.top();
        pq.pop();
        int two = pq.top();
        pq.pop();
        int three = one + two * 2;
        pq.push(three);
        answer++;
    }
    if(pq.top() < K) answer = -1;
    return answer;
}

피드백

우선순위 대기열에 대해 알아보세요. 잘 활용할 수 있을 것 같아요.

참조

암호:

https://velog.io/@minjeongss/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB %8D%94-%EB%A7%B5%EA%B2%8C-%ED%9E%99-C-%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D %B4

우선 대기열:

https://kbj96./15