문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42626
C++ 풀이
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> scoville, int K) {
int answer = 0;
int m, n;
priority_queue<int, vector<int>, greater<int> > pq;
for (int i = 0; i < scoville.size(); i++)
pq.push(scoville[i]);
while ((pq.top() < K) && (pq.size() > 1)) {
//가장 덜 매운 두 음식을 빼서 합치기
m = pq.top();
pq.pop();
n = pq.top();
pq.pop();
pq.push(m + (2 * n));
answer++;
}
if (pq.top() < K)
return -1;
return answer;
}
우선순위 큐(priority queue)를 활용하여 풀었다.
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 (0) | 2020.05.19 |
---|---|
[프로그래머스] 땅따먹기 (0) | 2020.05.13 |
[프로그래머스] 단체사진 찍기 (0) | 2020.05.11 |
[프로그래머스] 압축 (0) | 2020.05.08 |
[프로그래머스] 숫자의 표현 (0) | 2020.05.07 |