• 힙은 최댓값과 최솟값 연산을 빠르게 하기위한 알고리즘으로 완전 이진트리를 기본으로 한다.

    • 최대 힙 : 부모가 자식 노드보다 큰 힙 → 파이썬에서 이걸 구현 하려면 추가하려는 값에 -을 붙여 적용
    • 최소 힙 : 부모가 자식 노드보다 작은 힙 → 파이썬은 이 최소힙을 구현했다.
  • 관련 메서드

    • heapq.heappush(heap, item) : item 값을 힙에 넣는 메서드
    • heapq.heappop(heap) : heap()에서 가장 작은 수 pop() 제거&반환
    • heapq.heapify(x) : 리스트 x를 즉각적으로 heap으로 전환
    import heap
    
    heap = []
    heapq.heappush(heap,1)
    heapq.heappush(heap,2)
    heapq.haeppush(heap,3)
    
    print(heap) # [1,3,2]
    
    heapq.heappop(heap) # return 1 , [2,3]
    
    lis = [5,3,1]
    heapq.heapify(lis) # lis = [1,5,3]
    
    # 만약 최대 힙으로 만들고 싶은 경우
    heap = []
    heapq.heappush(heap,(-9,9))
    heapq.heappush(heap,(-1,1))
    heapq.heappush(heap,(-4,4))
    
    max_num = heapq.heappop(heap) 
    print(max_num[1]) # 9