๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐˜š๐˜ญ๐˜ฐ๐˜ธ ๐˜ฃ๐˜ถ๐˜ต ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ๐˜บ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋” ๋งต๊ฒŒ - C++ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

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

.23 2024. 4. 11. 16:23
๋ฌธ์ œ

๋งค์šด ๊ฒƒ์„ ์ข‹์•„ํ•˜๋Š” Leo๋Š” ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Leo๋Š” ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๋‘ ๊ฐœ์˜ ์Œ์‹์„ ์•„๋ž˜์™€ ๊ฐ™์ด ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ž์–ด ์ƒˆ๋กœ์šด ์Œ์‹์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์„ž์€ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ = ๊ฐ€์žฅ ๋งต์ง€ ์•Š์€ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ + (๋‘ ๋ฒˆ์งธ๋กœ ๋งต์ง€ ์•Š์€ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ * 2)

Leo๋Š” ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ K ์ด์ƒ์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜์—ฌ ์„ž์Šต๋‹ˆ๋‹ค.
Leo๊ฐ€ ๊ฐ€์ง„ ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด scoville๊ณผ ์›ํ•˜๋Š” ์Šค์ฝ”๋นŒ ์ง€์ˆ˜ K๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์„ž์–ด์•ผ ํ•˜๋Š” ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ ์‚ฌํ•ญ
  • scoville์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 1,000,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • K๋Š” 0 ์ด์ƒ 1,000,000,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • scoville์˜ ์›์†Œ๋Š” ๊ฐ๊ฐ 0 ์ด์ƒ 1,000,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์Œ์‹์˜ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋ฅผ K ์ด์ƒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ return ํ•ฉ๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ
scoville K return
[1, 2, 3, 9, 10, 12] 7 2

 


ํž™์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ.

 

์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์„ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์ฃผ๋ฏ€๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๊ฐ€ ๋‚ฎ์€ ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๊ฐ€์žฅ ์•ž ์›์†Œ๋ถ€ํ„ฐ K๋ณด๋‹ค ๋‚ฎ์€ ์ง€ ํ™•์ธํ•˜์—ฌ ๋‚ฎ๋‹ค๋ฉด ๊ทธ ๋‹ค์Œ ์›์†Œ์™€ ์„ž์–ด์„œ ์ƒˆ๋กœ์šด ์Šค์ฝ”๋นŒ ์ง€์ˆ˜๋กœ update๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

 

๊ฐ€์žฅ ์•ž์˜ ์›์†Œ๊ฐ€ K๋ณด๋‹ค ์ž‘์€๋ฐ ๊ทธ ๋‹ค์Œ ์›์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ์ œํ•œ์‚ฌํ•ญ์— ๊ฑธ๋ฆฌ๋ฏ€๋กœ -1์„ returnํ•ด์ค€๋‹ค.

 

๋๊นŒ์ง€ ๋„๋Š” ๋ฐฉ์‹์œผ๋กœ ์งฐ์—ˆ๋Š”๋ฐ, ๊ฐ€์žฅ ์œ„์˜ ์›์†Œ๊ฐ€ K๋ณด๋‹ค ํฌ๋ฉด ๋” ์ด์ƒ ์Œ์‹์„ ์„ž์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— while๋ฌธ์˜ ์กฐ๊ฑด์„ pq.top() <= K ๋กœ ํ•ด์ค˜๋„ ๋๋‹ค..

 

์ฝ”๋“œ
#include <string>
#include <vector>
#include <queue>

using namespace std;

int solution(vector<int> scoville, int K) {
    priority_queue<int, vector<int>, greater<int>> pq;
    
    for(int i : scoville) {
        pq.push(i);
    }

    int count = 0, index = 0;
    while(true) {
        if(pq.top() < K) {
            int temp = pq.top();
            pq.pop();
            if(pq.empty()) return -1;
            
            pq.push(temp + pq.top() * 2);
            pq.pop();
            count++;
        }
        else {
            pq.pop();
            if(pq.empty()) break;
        }
    }

    return count;
}
Comments