공부 기록

[프로그래머스] 더 맵게 C++

by 너나나

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

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

우선순위큐를 사용한다면 어렵지 않은 문제!!!!

#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;
    for(int i: scoville) { 
        pq.push(i);
    }
    while(pq.top() < K) {
        if(pq.size() == 1) return -1; // 스코빌 지수를 넘지 않았는데 사이즈가 1이라면 스코빌지수 K이상으로 만들 수 x
        int a = pq.top();
        pq.pop();
        pq.push(a + pq.top()*2);
        pq.pop();
        answer++;
    }

    return answer;
}

블로그의 정보

공부 기록

너나나

활동하기