최소 Heap은 말 그대로 값이 작은 값을 항상 부모 노드로 올림으로써 루트에는 항상 가장 작은 값이 오도록 하는 것을 뜻한다.
최대 Heap은 최소 Heap과 반대로 가장 큰 값을 부모노드로 계속 올림으로써 루트에는 항상 가장 큰 값이 오도록 하는 것을 뜻한다.
import heapq
def solution(scoville, K):
heapq.heapify(scoville)
cnt = 0
while scoville[0] < K:
if len(scoville) == 1:
return -1
cnt += 1
first = heapq.heappop(scoville)
second = heapq.heappop(scoville)
heapq.heappush(scoville, first + second * 2)
return cnt
📌 파이썬의 heapq 모듈은 최소 힙 자료구조를 제공함
heapq.heapify(list) : 기존의 list를 힙으로 변환 (인덱스 0번에 최솟값이 위치함)
heapq.heappop(list) : list의 가장 작은 값 삭제 후, 그 값을 리턴
heapq.heappush(list, number) : 힙에 원소(number) 추가
시간 복잡도 , 공간복잡도: O(n)