|
์ฝ๋ ์์ฑํ๊ธฐ
public int solution(int[] scoville, int K) {
// ์์ ๋ ์์๋ฅผ ๊บผ๋ด์ด ์ฌ์ฉํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌ๋ ์ํ๋ก ๋ฃ์ด์ผ ํจ
// PriorityQueue -> ๊บผ๋ด๊ธฐ๋ ์ฝ๊ณ , ์๋ก์ด ๊ฐ ๋ฃ์ผ๋ฉด ์๋ ์ ๋ ฌ
PriorityQueue pq = new PriorityQueue<>();
for (int i : scoville) {
pq.add(i);
}
int cnt = 0;
// ํ ์ ์ผ ์์ ๊ฐ์ด ๋งค์ด๋ง ๊ธฐ์ค ๋ณด๋ค ํฌ๋ฉด, ๋ค์๋ ๋ฌด์กฐ๊ฑด ๋ค ํผ
// -> ๋ฐ๋ผ์ ํ ์ ์ผ ์์ ๊ฐ์ด ๋งค์ด๋ง ๊ธฐ์ค๋ณด๋ค ์์ ๋์ ๋ฐ๋ณต
while ((int) pq.peek()<K) {
// ํ์ ์ฌ์ด์ฆ๊ฐ 1์ด๋ฉด, ๋ ์์๋ฅผ ๊บผ๋ผ ์ ์์.
// -> ์ค์ฝ๋น์ ์๋ฅผ ๋ ์ฌ๋ฆด ์ ์์ = ๋งค์ด๋ง ๊ธฐ์ค์ ๋์ ์ ์์
// -> ๋ฌธ์ ์กฐ๊ฑด์ ๋ฐ๋ผ -1์ ๋ฆฌํด.
if(pq.size() == 1 ) {
cnt = -1;
break;
}
// ํ์์ ๋ ๊ฐ๋ฅผ ๋ฝ์ ๊ณต์๋๋ก ์๊ณ ๋ค์ ํ์ ๋ฃ๊ธฐ.
// ์คํํ ๋๋ง๋ค cnt++;
int first = (int) pq.poll();
int second = (int) pq.poll();
int answer = first + (second*2);
pq.add(answer);
cnt++;
}
return cnt;
}
Java
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
โข
์์์ ์ญ์ , ์ถ๊ฐ์ ๋ฐ๋ฅธ ์๋ ์ ๋ ฌ์ด ์ง์์ ์ผ๋ก ํ์ํด PriorityQueue ์ฌ์ฉํจ