[ํ๋ก๊ทธ๋๋จธ์ค] LV.2 ๋ ๋งต๊ฒ
1. ๋ฌธ์ : Link
๋ฐฐ์ด์ ์ฃผ๊ณ ๊ฐ์ฅ ์์ ์๊ฐ K๋ณด๋ค ํฌ๊ฒ๋ ๋ง๋ค์ด์ฃผ๋ ๋ฌธ์
๊ฐ์ฅ ์์ ์์ ๋ ๋ฒ์งธ๋ก ์์์๋ฅผ mixํ์ฌ ํฐ์๋ฅผ ๋ง๋ค์ด์ฃผ๋๋ฐ ์ด ์๊ฐ K๋ณด๋ค ์์์ง ํฐ์ง ํ์ธํด์ค์ผํจ
2. ํ์ด
๋ฐฐ์ด๊ณผ pop์ ์ด์ฉํด์ ๊ตฌํํ์ง๋ง ํจ์จ์ฑ ํ ์คํธ์์ ๋จ์ด์ง
heapq๋ฅผ ์ด์ฉํด์ min๊ฐ์ ๊ฐ์ ธ์ค๋ ํจ์จ์ ๋์
3. ์ฝ๋
def solution(scoville, K):
answer = 0
while 1:
p = 0
if len(scoville) == 1:
if scoville[0] >= K:
return answer
else:
return -1
for s in scoville:
if s < K:
break
else:
p += 1
if p == len(scoville):
return answer
else:
scoville.sort()
new = scoville.pop(0) + (scoville.pop(0) * 2)
scoville.append(new)
answer += 1
import heapq
def solution(scoville, K):
answer = 0
heapq.heapify(scoville)
while scoville[0] < K:
mix = heapq.heappop(scoville) + (heapq.heappop(scoville) * 2)
heapq.heappush(scoville, mix)
answer += 1
if len(scoville) == 1 and scoville[0] < K:
return -1
return answer
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
int answer = 0;
PriorityQueue<Integer> pq = new PriorityQueue<>();
// priority queue ์์ฑ
for (int i : scoville) {
pq.add(i);
}
while (true) {
// ์ต์์น๋ฅผ ๋์ ๊ฒฝ์ฐ ์ข
๋ฃ
if (pq.peek() >= K) break;
// ๋ ์ด์ ์์ ์ ์๋ ๊ฒฝ์ฐ -1 ํ ์ข
๋ฃ
if (pq.size() == 1) {
answer = -1;
break;
}
// 2๊ฐ๋ฅผ ๋ฝ์ ์๊ณ ๋ค์ ์ฝ์
pq.add(pq.poll() + pq.poll() * 2);
answer++;
}
return answer;
}
}
'๐ป Coding Problems Solving > Stack | Queue' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] LV.2 ํ๋ฆฐํฐ (์๋ฐ java) (0) | 2023.02.22 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] LV.2 ์ฌ๋ฐ๋ฅธ ๊ดํธ (์๋ฐ java) (0) | 2022.11.25 |
[BOJ 2504] ๊ดํธ์ ๊ฐ (0) | 2022.06.26 |
[ํ๋ก๊ทธ๋๋จธ์ค] LV.2 ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2022.04.15 |
[ํ๋ก๊ทธ๋๋จธ์ค] LV.2 ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ (0) | 2022.04.09 |
์ต๊ทผ๋๊ธ