728x90
반응형
Java
import java.util.*;
class Solution {
public int solution(int[] scoville, int K) {
PriorityQueue que = new PriorityQueue();
int count = 0;
for(int i : scoville) que.add(i);
while((int)que.element() < K){
if(que.size() <= 1){
count = -1;
break;
}
int first = (int)que.poll();
int second = (int)que.poll();
que.add((first + (second * 2)));
count++;
}
return count;
}
}
Python
import heapq
def solution(scoville, K):
count = 0
heapq.heapify(scoville)#scoville을 heap으로 변한
while scoville[0] < K:
if len(scoville) <= 1:
return -1
first = heapq.heappop(scoville)#가장 작은 요소 추출 후 삭제
second = heapq.heappop(scoville)
scoville.append(first + second * 2)
count += 1
return count
# 시간 복잡도 탈락
# count = 0
# while(min(scoville) < K):
# if len(scoville) <= 1:
# count = -1
# break
# first = min(scoville)
# scoville.remove(min(scoville))
# second = min(scoville)
# scoville.remove(min(scoville))
# scoville.append(first + second * 2)
# count += 1
# return count
728x90
반응형