heapq
라는 라이브러리를 사용한다. 단, 최소힙만 지원하기 때문에 최대힙은 따로 처리를 해주어야 한다.import heapq
def solution(scoville, K):
# 횟수가 1 증가할 때마다 1씩 늘어남
answer = 0
# scoville 리스트를 heap으로 만듬
heapq.heapify(scoville)
while True:
# 가장 작은 맵기를 가져온다.
min1 = heapq.heappop(scoville)
# 가장 작은 맵기가 K보다 크거나 같다면 끝!
if min1 >= K:
break
# 마지막 계산까지 K가 만족이 안됐다면 -1 반환
elif len(scoville) == 0:
answer = -1
break
# 두번째로 작은 맵기를 가져와서 연산하여 push한다.
min2 = heapq.heappop(scoville)
new = min1 + min2*2
heapq.heappush(scoville, new)
answer += 1
return answer
오늘은 보고서 작성하고 README 작성하는 등 여러 작업들 때문에 공부를 많이 하지는 못했다. 하지만 동적 계획법 문제풀이가 너무 재미있었다. 다시 한번더 코드를 살펴봐야할 것 같다.