๐ ํ๋ก๊ทธ๋๋จธ์ค / Heap / Level 2 / ๋ ๋งต๊ฒ
๐ ๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ซ ์ ํ ์ฌํญ
- 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 |
๐ค ํ์ด ๋ฐฉ๋ฒ
โก๏ธ Heap ์ ์ฐ์ ์์ ํ๋ฅผ ํตํด ๊ตฌํํ๋ค. ์ ๋ ฅ๋ฐ์ ๋ฐฐ์ด์ ํ์ ๋ฃ์ ํ ์์์ ๋ถํฐ ๋นผ๋ด๋ฉด์ ์กฐ๊ฑด์ ๋ง์กฑ ์ํฌ ๋๊น์ง ๋ฐ๋ณตํ๋๋ก ํ๋ค.
๐ป ํ์ด ์ฝ๋
import java.util.PriorityQueue;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
// ์ฐ์ ์์ ํ๋ฅผ ํ์ฉํ minHeap ์ ์ธ
PriorityQueue<Integer> minHeap = new PriorityQueue<>();
// ์์ ์ถ๊ฐ
for (int i=0; i<scoville.length; i++) {
minHeap.add(scoville[i]);
}
// ๋ฐ๋ณต๋ฌธ ์กฐ๊ฑด (1) : ์ต์๊ฐ์ ๊ฐ์ง ์์๊ฐ K ๊ฐ๋ณด๋ค ์๋ค.
// ๋ฐ๋ณต๋ฌธ ์กฐ๊ฑด (2) : Heap ์ ์์๊ฐ 1๊ฐ ๋ฐ์ ์๋ค.
while (minHeap.peek() < K && minHeap.size() != 1) {
int top = minHeap.poll();
int next = minHeap.poll();
minHeap.add(top + 2*next);
answer++;
}
// ๋ฐ๋ณต๋ฌธ์ ๋ค ๋์๋๋ฐ๋ ์ต์ ๋
ธ๋ ๊ฐ์ด K ๋ณด๋ค ์๋ค๋ฉด ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ ์๋ฏธ
if (minHeap.peek() < K) {
return -1;
}
return answer;
}
}
/*
๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ : (์ฐ์ ์์ ํ) ์ต์ํ
*/
[level 2] Title: ๋ ๋งต๊ฒ, Time: 1514.12 ms, Memory: 127 MB -BaekjoonHub · Young998904/Practice_Algorithm_Auto@3c82282
Show file tree Showing 2 changed files with 99 additions and 0 deletions.
github.com