본문 바로가기
Programming Solve/프로그래머스

프로그래머스 - 더 맵게 / C++

by msm1029 2022. 3. 11.
반응형

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42626

 

코딩테스트 연습 - 더 맵게

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

programmers.co.kr

 

 

 

문제 풀이

주석으로 대체

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int solution(vector<int> scoville, int K) {
    int answer = 0;
    priority_queue<int, vector<int>, greater<int> > pq;
    //min heap 생성
    
    for(int i=0; i<scoville.size(); i++){
        pq.push(scoville[i]);
    } //heap에 원소들을 삽입
    
    while(pq.top() < K){ //모든 원소가 K 이상이 될 때까지
        if(answer >= scoville.size() || pq.size() <= 1) return -1;
        //모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우 return -1
        
        int tmp = pq.top(); //가장 스코빌 지수가 낮은 음식에
        pq.pop();
        tmp += (pq.top() * 2); //2번째로 낮은 음식을 섞는다
        pq.pop();
        
        pq.push(tmp);//다시 heap에 넣고
        answer++;//answer count 증가
    }
    
    return answer;
}
반응형