๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋” ๋งต๊ฒŒ( Level 2)

by ์•ˆ์ฃผํ˜• 2021. 10. 20.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋” ๋งต๊ฒŒ

๋งค์šด ๊ฒƒ์„ ์ข‹์•„ํ•˜๋Š” 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=0; i<scoville.size(); i++){
        pq.push(scoville[i]);
    }

    while(pq.top()<K){
        if(pq.size()==2){
            int a=pq.top(); pq.pop();
            int b=pq.top(); pq.pop();
            int mix=a+(b*2);
            if(mix<K){
                answer=-1;
                break;
            }
            else{
                answer++;
                break;
            }
        }
      else if(pq.size()!=1){
            answer++;
            int a=pq.top(); pq.pop();
            int b=pq.top(); pq.pop();
            int mix=a+(b*2);          
            pq.push(mix);
        }        
    }   

    return answer;
}

๋Œ“๊ธ€