반응형

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

 

코딩테스트 연습 - 더 맵게

매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같

programmers.co.kr

 

min heap으로 최소 스코빌 지수 음식 두 개를 계속 구해주었습니다

#include <string>
#include <vector>
#include <queue>
using namespace std;

int solution(vector<int> scoville, int K) {
    priority_queue<int, vector<int>, greater<int>> pq(scoville.begin(), scoville.end());
    for(int cnt=0; !pq.empty() ; cnt++) {
        int t1 = pq.top(); pq.pop();
        if(t1 >= K) return cnt;
        if(pq.empty()) break;
        int t2 = pq.top(); pq.pop();
        pq.push(t1 + t2 * 2);
    }
    return -1;
}
반응형

+ Recent posts