

import heapq
def solution(scoville, K):
heapq.heapify(scoville)
mix = 0
while scoville[0] < K: # 가장 작은 값이 K 이상이 될 때까지 반복
# 예외처리
if len(scoville) < 2:
return -1 # 더 이상 섞을 수 없으면 -1 반환
mix +=1
one = heapq.heappop(scoville)
two = heapq.heappop(scoville)
plus = one + (2*two)
heapq.heappush(scoville, plus)
return mix
heapq를 사용하여 풀면 간단하게 풀 수 있었다. scoville 배열을 heapq로 만들어주고 scoville배열의 맨 첫 번쨰 즉, 가장 작은 수가 K보다 작으면 계속 배열을 돌고 크거나 같다면 탈출하는 방식이다.
이때 one에서 첫번째 [0]을 pop한 후 새로 heapq가 재배열된다. 그 후 가장 작은 수인 two도 삭제하고 plus에 one + 2*two값을 넣어준다. 그 후 scoville에 push해준다.
만약 반복문을 탈출했다면 mix를 반환한다.
heapq만 알고 있다면 파이썬에서는 정말 쉬운 문제라 생각한다. 역시 적폐 파이썬..