๋ฌธ์ ์ค๋ช
๋งค์ด ๊ฒ์ ์ข์ํ๋ 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 ํฉ๋๋ค.
์ ์ถ๋ ฅ ์
[1, 2, 3, 9, 10, 12] | 7 | 2 |
์ ์ถ๋ ฅ ์ ์ค๋ช
- ์ค์ฝ๋น ์ง์๊ฐ 1์ธ ์์๊ณผ 2์ธ ์์์ ์์ผ๋ฉด ์์์ ์ค์ฝ๋น ์ง์๊ฐ ์๋์ ๊ฐ์ด ๋ฉ๋๋ค.
์๋ก์ด ์์์ ์ค์ฝ๋น ์ง์ = 1 + (2 * 2) = 5
๊ฐ์ง ์์์ ์ค์ฝ๋น ์ง์ = [5, 3, 9, 10, 12] - ์ค์ฝ๋น ์ง์๊ฐ 3์ธ ์์๊ณผ 5์ธ ์์์ ์์ผ๋ฉด ์์์ ์ค์ฝ๋น ์ง์๊ฐ ์๋์ ๊ฐ์ด ๋ฉ๋๋ค.
์๋ก์ด ์์์ ์ค์ฝ๋น ์ง์ = 3 + (5 * 2) = 13
๊ฐ์ง ์์์ ์ค์ฝ๋น ์ง์ = [13, 9, 10, 12]
๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๊ฐ 7 ์ด์์ด ๋์๊ณ ์ด๋ ์์ ํ์๋ 2ํ์ ๋๋ค.
#include <bits/stdc++.h>
using namespace std;
int solution(vector<int> scoville, int K) {
int answer = 0;
int low, second;
// ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํ์ฌ push๊ฐ ์ผ์ด๋๋ฉด ์๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด ๋๊ฒ ํจ
priority_queue<int, vector<int>, greater<int>> sc(scoville.begin(), scoville.end());
// sc.top์ ๊ฐ์ฅ ๋ฎ์ ์ค์ฝ๋น ์ง์์ด์ ์ต๊ทผ ๊ณ์ฐ๋ ์์ ์ง์
// top์ด K๋ณด๋ค ๋์ผ๋ฉด ๋ฐ๋ณต๋ฌธ ์ค๋จ
while(sc.top() < K){
// ๋์ด์ ์์ ์ค์ฝ๋น ์ง์๊ฐ ์์ผ๋ฉด ๋ถ๊ฐ๋ฅ์ด๋ฏ๋ก -1 ๋ฆฌํด
if(sc.size() == 1)
return -1;
// ๊ฐ์ฅ ๋ฎ์ ์ค์ฝ๋น ์ง์
low = sc.top();
sc.pop();
// ๋๋ฒ์งธ๋ก ๋ฎ์ ์ค์ฝ๋น ์ง์
second = sc.top();
sc.pop();
// ์์ ์ค์ฝ๋น ์ง์ ์ฝ์
sc.push(low + second * 2);
// ์์ ํ์ ์ฆ๊ฐ
answer++;
}
return answer;
}
์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํ์ฌ ๊ณ์ฐ๋ ๊ฐ์ ๋ฃ์ผ๋ฉด ์๋์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๊ฒ ํ๋ ๊ฒ์ด ์ค์ํ ๋ฌธ์ ์ด๋ค.
๋ฒกํฐ์ eraseํจ์ ์ด์ฉ ์ ์๊ฐ์ด๊ณผ ๋ฌธ์ ๊ฐ ์๋ค.
โ
์ฐ์ ์์ ํ ๊ฐ์ฅ ์์ ์กด์ฌํ๋ ์ค์ฝ๋น ์ง์๊ฐ ๊ฐ์ฅ ๋ฎ์ ์ค์ฝ๋น ์ง์์ด๊ณ ,
ํ์ ๊ฐ์ฅ ์์ popํ๊ณ ๋ค์ ์ฒซ๋ฒ์งธ ํ์ ๊ฐ์ด ๋๋ฒ์งธ๋ก ๋ฎ์ ์ค์ฝ๋น ์ง์์ด๋ค.
๊ณต์๋๋ก ๊ณ์ฐํ ๊ฐ์ ์ฐ์ ์์ ํ์ ์ฝ์ ํ๋ฉด ์๋ ์ ๋ ฌ๋๊ณ , ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
์ฐ์ ์์ ํ์ ์ฌ์ด์ฆ๊ฐ 1์ด๋ผ๋ฉด ์์ ์์์ด ์๊ธฐ ๋๋ฌธ์ -1์ ๋ฐํํ๋ค.
'๐ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] K๋ฒ์งธ์ (C++) (0) | 2020.12.23 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ฃผํ์ง ๋ชปํ ์ ์ (C++) (0) | 2020.12.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ํ๋ฒํธ ๋ชฉ๋ก (C++) (0) | 2020.12.18 |
C++ STL - ๋ฒกํฐ ๋ผ๋ฆฌ ์ฐ์ฐ (ํฉ์งํฉ, ์ฐจ์งํฉ, ๊ต์งํฉ, ํฉ๋ณ) (0) | 2020.12.18 |