프로그래머스 힙 Level 2 더 맵게 파이썬 풀이
문제링크 https://programmers.co.kr/learn/courses/30/lessons/42626
heapq만 알고있다면 Level 1 정도의 문제
import heapq
def solution(scoville, K):
# heapq를 사용하여 최소힙으로 변환
heapq.heapify(scoville)
# 계산 횟수
count = 0
# 스코빌 배열의 크기가 2 이상이고 제일 작은 스코빌 지수가 K보다 작다면 반복
while len(scoville) >= 2 and scoville[0] < K:
count += 1 # 계산횟수 +1
a = heapq.heappop(scoville) # 제일 작은값
b = heapq.heappop(scoville) # 두번째로 작은값
heapq.heappush(scoville, (a + b * 2)) # 섞어서 힙에 넣음
# 스코빌 배열의 크기가 1이고 그 값이 K보다 작다면 만들 수 없는 경우
if len(scoville) == 1 and scoville[0] < K:
return -1 # -1 리턴
return count