음식의 스코빌 지수를 담은 배열 scoville이 주어지면, 모든 음식을 섞어 K이상의 스코빌 지수를 만드려고 한다. 이때, 스코빌 지수는
섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)
IN
음식의 스코빌 지수를 담은 배열 scoville
모든 음식을 섞어 만들고자 하는 스코빌 지수 K
OUT
섞어야 하는 최소 횟수
제한사항
최소번 섞어서 모든 음식의 스코빌 지수를 k이상으로 만들려면 스코빌 지수가 k이하인 음식들을 섞어야한다
-> mim heap을 이용해 스코빌지수가 낮은 음식들부터 섞는다
import heapq
def solution(scoville, K):
answer = 0
heap = []
for i in scoville:
heapq.heappush(heap, i)
while heap[0] < K:
if len(heap) == 1:
return -1
first = heapq.heappop(heap)
second = heapq.heappop(heap)
heapq.heappush(heap, first+second*2)
answer += 1
return answer