https://programmers.co.kr/learn/courses/30/lessons/42626
์ฝ๋
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
Queue<Integer> pq = new PriorityQueue<Integer>();
// ์ฐ์ ์์ ํ์ ๋ฐฐ์ด๊ฐ ์ ์ฅ
for(int i : scoville) pq.offer(i);
// ์ฐ์ ์์ ํ์ ์ค์ฝ๋น์ง์ K๋ณด๋ค ๊ฐ์ด ์์๋ ๋ฐ๋ณต
while(pq.peek() < K){
// ํ์ฌ ์ฐ์ ์์ ํ์ ๊ฐ์ด ํ๊ฐ๋ง ์กด์ฌํ๊ณ , ๊ทธ๊ฐ์ด K๋ณด๋ค ์์ผ๋ฏ๋ก ์ค์ฝ๋น์ง์๋ฅผ ๋ง๋ค ์ ์์ -> -1 ๋ฆฌํด
if(pq.size() == 1)
return -1;
// ์์ ์์์ ์ค์ฝ๋น ์ง์ = ๊ฐ์ฅ ๋งต์ง ์์ ์์์ ์ค์ฝ๋น ์ง์ + (๋ ๋ฒ์งธ๋ก ๋งต์ง ์์ ์์์ ์ค์ฝ๋น ์ง์ * 2)
int a = pq.poll();
int b = pq.poll();
pq.offer(a+(2*b));
answer ++;
}
return answer;
}
}
ํ์ด
์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ๋ ๋ฌธ์ ๋ก, ํ ์๋ฃ๊ตฌ์กฐ์ ๋ํ ๊ฐ๋ ์ด ๋ถ์กฑํ๊ณ ,, ์ฐ์ ์์ํ๋ ์ฌ์ค ๊ฑฐ์ ์ฒ์ ์ฌ์ฉํด ๋ณด๋ ๊ฒ ๊ฐ๋ค. ๋ค์์ ์๊ฐ๋ ๋ ํ์๋ํด ์ ๋ฆฌ๋ฅผ ํด์ผ๊ฒ ๋ค.
์ฐ์ ์์ ํ๋ ํ์ ์ผ์ข ์ด์ง๋ง, ํ์๋ ๋ค๋ฅด๊ฒ ๊ธฐ์กด์ ์ ์ ์ ์ถ์ด ์๋ ์ฐ์ ์์๊ฐ ๋์ ์์๋๋ก ๋ฐํํ๋ค.
์ฆ ์ ์ฐ์ ์์ pq์ ์ด๋ ํ ๊ฐ์ด ์๋ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์(๊ฐ์ฅ ์์๊ฐ) ๊ฐ์ด peek()์ ์ํด K์ ๋น๊ต๊ฐ ๋๋ค.
K๋ณด๋ค ์์๋, ๊ฐ์ฅ ์์ ๊ฐ ๋ ๊ฐ๋ฅผ ๋นผ๋ด๊ณ ์ด ๋ ๊ฐ์ ๊ฐ์ ํตํด ์๋ก์ด ๊ฐ(์ค์ฝ๋น์ง์)์ ๋ง๋ ๋ค.
์ฆ ๋ฐ์ดํฐ๋ค์ด ์ฐ์ ์์์๋ฐ๋ผ ์๋์ผ๋ก ์ ๋ ฌ๋๋ ํธ๋ฆฌํ ์๋ฃ๊ตฌ์กฐ์ด๋ค !
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 13904๋ฒ: ๊ณผ์ (๊ทธ๋ฆฌ๋) (0) | 2020.03.22 |
---|---|
[Codeforces] 1300A: Non-zero (0) | 2020.03.21 |
[๋ฐฑ์ค] 3085๋ฒ: ์ฌํ ๊ฒ์(์์ ํ์) (2) | 2020.03.19 |
[๋ฐฑ์ค] 1417๋ฒ: ๊ตญํ์์ ์ ๊ฑฐ(์์ ํ์) (0) | 2020.03.19 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์คํฌํธ๋ฆฌ (2) | 2020.03.19 |
๋๊ธ