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

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

[풀이] 우선순위 queue

 

시간복잡도 : O(nlgn)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <cstdio>
#include <queue>
#include <vector>
 
using namespace std;
 
int solution(vector<int> scoville, int K) {
    int answer = 0;
 
    priority_queue<int> pq;
    for (int& t : scoville) pq.push(-t);
    
    while (!pq.empty()) {
 
        if (-pq.top() >= K) return answer;
        if (pq.size() <= 1return -1;
 
        int a = -pq.top(); pq.pop();
        a += -2 * pq.top(); pq.pop();
 
        pq.push(-a);
 
        answer++;
    }
    return answer;
}
cs
https://github.com/has2/Algorithm/blob/master/programmers/level2/%EB%8D%94%20%EB%A7%B5%EA%B2%8C.cpp

+ Recent posts