๋ฌธ์ ์ค๋ช
๋งค์ด ๊ฒ์ ์ข์ํ๋ 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 |
์ ์ถ๋ ฅ ์ ์ค๋ช
- ์ค์ฝ๋น ์ง์๊ฐ 1์ธ ์์๊ณผ 2์ธ ์์์ ์์ผ๋ฉด ์์์ ์ค์ฝ๋น ์ง์๊ฐ ์๋์ ๊ฐ์ด ๋ฉ๋๋ค.
์๋ก์ด ์์์ ์ค์ฝ๋น ์ง์ = 1 + (2 * 2) = 5
๊ฐ์ง ์์์ ์ค์ฝ๋น ์ง์ = [5, 3, 9, 10, 12] - ์ค์ฝ๋น ์ง์๊ฐ 3์ธ ์์๊ณผ 5์ธ ์์์ ์์ผ๋ฉด ์์์ ์ค์ฝ๋น ์ง์๊ฐ ์๋์ ๊ฐ์ด ๋ฉ๋๋ค.
์๋ก์ด ์์์ ์ค์ฝ๋น ์ง์ = 3 + (5 * 2) = 13
๊ฐ์ง ์์์ ์ค์ฝ๋น ์ง์ = [13, 9, 10, 12]
๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๊ฐ 7 ์ด์์ด ๋์๊ณ ์ด๋ ์์ ํ์๋ 2ํ์ ๋๋ค.
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> scoville, int K) {
int answer = 0;
if( K < 0 || K > 1000000000 ) return -1;
if( scoville.empty() ) return -1;
if( scoville.size() < 2 || scoville.size() > 1000000 ) return -1;
priority_queue<int, vector<int>, greater<int>> que(scoville.begin(), scoville.end());
while( que.top() < K )
{
if( que.size() ==1 )
return -1;
int first = 0, second = 0;
first = que.top();
que.pop();
second = que.top();
que.pop();
que.push(first + (second * 2));
answer++;
}
return answer;
}
์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํด์ ํ์๋ค
priority_queue์ ๋ํด์ ํฌ์คํ ํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค
ํ์ด๋ ํ๋ ๋ง์ด ์ฌ์ฉํ์ง๋ฅผ ์์์, ์์ง ์ต์์น๊ฐ ์์์ ์๊ฐ์ ์ก์๋จน์๋ค;;;
๋ฌธ์ ์์ฒด๋ ๊ทธ๋ฆฌ ์ด๋ ต์ง๋ ์์ ๊ฒ ๊ฐ๋ค
์ฒซ ๋ฒ์งธ ์์๋ ๋ ๋ฒ์งธ ์์ ๋น๊ต๋ฅผ ์ํด์
top() ๊บผ๋ด๊ณ , pop() ํด์ฃผ๊ณ , ๋ ๋ฒ์งธ๊บผ ๊บผ๋ด๊ณ ํํฉ ํ๊ณ
'๐Algorithm ------------ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ์์ ํ์/๋ชจ์๊ณ ์ฌ/C++ (0) | 2021.07.30 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์ ๋ ฌ/k๋ฒ์งธ์/C++ (0) | 2021.07.28 |
ํ๋ก๊ทธ๋๋จธ์ค - ์คํ/ํ/๊ธฐ๋ฅ๊ฐ๋ฐ/C++ (0) | 2021.07.28 |
ํ๋ก๊ทธ๋๋จธ์ค - ํด์/์์ฅ/C++ (0) | 2021.07.26 |
ํ๋ก๊ทธ๋๋จธ์ค - ํด์/์ ํ๋ฒํธ ๋ชฉ๋ก/C++ (0) | 2021.07.26 |