[Programmers] Lv2. ๋” ๋งต๊ฒŒ | C++

2023. 6. 21. 16:23ใ†Coding Test/Programmers

๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ‘จโ€๐Ÿ’ปํ’€์ด ๊ณผ์ •

 

๋ฌธ์ œ ์œ ํ˜•๋„ ํž™(Heap)์ด๋ผ ๋ถ„๋ฅ˜๋˜์–ด ์žˆ์—ˆ์ง€๋งŒ, ์ง€๋ฌธ์„ ์ฝ์ž๋งˆ์ž ์ตœ์†Œ ํž™(Min Heap)์ด ์ƒ๊ฐ๋‚˜๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ๋ฒ”์œ„ ์ˆซ์ž๊ฐ€ ๋งค์šฐ ํฌ๋ฏ€๋กœ, ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋งŒ ์กฐ์‹ฌํ•˜๋ฉด ์†์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

โœ๏ธ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ

#include <string>
#include <vector>
#include <queue>
using namespace std;
using LL = long long;

int solution(vector<int> scoville, int K) {
    int answer = 0;
    priority_queue<LL, vector<LL>, greater<LL>> scovilles;
    
    for (const auto element : scoville)
        scovilles.emplace(element);
    

    while (scovilles.size() >= 2) {
        LL leastSpicyFood = scovilles.top();
        scovilles.pop();

        LL secondLeastSpicyFood = scovilles.top();
        scovilles.pop();

        if (leastSpicyFood >= K)
            break;

        LL newScovill = leastSpicyFood + secondLeastSpicyFood * 2;
        answer++;
        scovilles.emplace(newScovill);
    }

    if (scovilles.top() < K)
        return -1;

    return answer;
}

 

 

728x90
๋ฐ˜์‘ํ˜•