๋งค์ด ๊ฒ์ ์ข์ํ๋ Leo๋ ๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๋ฅผ K ์ด์์ผ๋ก ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๋ฅผ K ์ด์์ผ๋ก ๋ง๋ค๊ธฐ ์ํด Leo๋ ์ค์ฝ๋น ์ง์๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ ๊ฐ์ ์์์ ์๋์ ๊ฐ์ด ํน๋ณํ ๋ฐฉ๋ฒ์ผ๋ก ์์ด ์๋ก์ด ์์์ ๋ง๋ญ๋๋ค.
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 ํฉ๋๋ค.
๋ฌธ์ ์ฃผ์: https://programmers.co.kr/learn/courses/30/lessons/42626
๋ฌธ์ ํ์ด
์ต์ ํ์ ๋ง์กฑํ๋ ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ฐ์ ์์ ํ(priority queue)๋ ์ต๋ ํ๊ณผ ์ต์ ํ ๋ ์ข ๋ฅ๊ฐ ์์ต๋๋ค. ์ต๋ ํ(max-heap)์ ํ ๋ด์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์์๋๋ก ๋ฐํํ๊ณ , ์ต์ ํ(min-heap)์ ํ ๋ด์ ๊ฐ์ฅ ์์ ๊ฐ์ ์์๋๋ก ๋ฐํํฉ๋๋ค. ์ด ๋ฌธ์ ์์ ์ค์ฝ๋น ์ง์๊ฐ ๊ฐ์ฅ ์์ ๊ฒ ๋ ๊ฐ๊ฐ ํ์ํ๋ฏ๋ก ์ต์ ํ์ ๋ง์กฑํ๋ ์ฐ์ ์์ ํ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค.
- ์ต์ํ์ ๋ง์กฑํ๋ ์ฐ์ ์์ ํ(pq)์ ์ค์ฝ๋น ์ง์ ๋ฐฐ์ด์ ๊ฐ์ ์ ์ฅํ๋ค.
- pq์์ ๊ฐ์ฅ ์์ ๊ฐ(x)๊ณผ ๋ ๋ฒ์งธ๋ก ์์ ๊ฐ(y)์ ๊บผ๋ธ๋ค. (์ด๋, pq์ ์์๊ฐ 1๊ฐ๋ฟ์ด๋ผ๋ฉด return -1)
- ์๋ก ๋ง๋ ์์์ ์ค์ฝ๋น ์ง์(x + y*2)๋ฅผ pq์ ์ ์ฅํ๊ณ answer์ 1์ ๋ํ๋ค.
- pq์์ ๊ฐ์ฅ ์์ ๊ฐ์ด K ์ด์์ด 2, 3์ ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
์์ค์ฝ๋
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | // ๋ ๋งต๊ฒ #include <iostream> #include <vector> #include <functional> #include <queue> using namespace std; // min-heap(์ต์ ํ)์ ๋ง์กฑํ๋ ์ฐ์ ์์ ํ ์ ์ธ priority_queue< int, vector<int>, greater<int> > pq; int solution(vector<int> scoville, int K) { int answer = 0; // ์ต์ ํ์ ์์ ์ถ๊ฐ for (int i = 0; i < scoville.size(); i++) { pq.push(scoville[i]); } while (pq.top() < K) { int x = pq.top(); // ๊ฐ์ฅ ์ ๋งค์ด ์์์ ์ค์ฝ๋น ์ง์ pq.pop(); if (pq.empty()) // ๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๋ฅผ K ์ด์์ผ๋ก ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ return -1; int y = pq.top(); // ๋ ๋ฒ์งธ๋ก ์ ๋งค์ด ์์์ ์ค์ฝ๋น ์ง์ pq.pop(); pq.push(x + y * 2); // ์๋ก ๋ง๋ ์์์ ์ค์ฝ๋น ์ง์ push answer++; } return answer; } | cs |
๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์์ ํ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค :)
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๋์คํฌ ์ปจํธ๋กค๋ฌ ํ์ด (0) | 2020.07.24 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / C++] ๋ผ๋ฉด๊ณต์ฅ ํ์ด (0) | 2020.07.24 |
[C++] ํ๋ก๊ทธ๋๋จธ์ค - "๋ชจ์๊ณ ์ฌ" ํ์ด (0) | 2020.07.03 |
[C++] ํ๋ก๊ทธ๋๋จธ์ค - "H-index" ํ์ด (0) | 2020.06.03 |
[C++] ํ๋ก๊ทธ๋๋จธ์ค - "๊ฐ์ฅ ํฐ ์" ํ์ด (0) | 2020.06.03 |