Kim Jinung

Python - heapq 본문

Language/Python

Python - heapq

Kim Jinung 2022. 12. 8. 16:32
 

heapq — Heap queue algorithm — Python 3.11.1 documentation

heapq — Heap queue algorithm Source code: Lib/heapq.py This module provides an implementation of the heap queue algorithm, also known as the priority queue algorithm. Heaps are binary trees for which every parent node has a value less than or equal to an

docs.python.org

heapq 모듈은 heap queue 알고리즘의 구현을 제공한다. (우선순위 큐 알고리즘으로도 알려져있다.)

*주의할 점은 사용하기 전에 힙으로 만들고자 하는 리스트를 heapify 메서드에 넘겨서 힙으로 변경 시켜주어야 한다. 

*리스트를 힙으로 변경한 이후에는 heapq 객체의 메서드가 아닌, 리스트의 append 메서드 등을 사용하면 더 이상 힙 조건을 만족하지 않게 된다.


 

  • heap은 트리 기반의 자료구조다.
  • BST(Binary Search Tree)는 항상 모든 노드가 정렬된 상태를 유지한다. 즉 탐색과 삽입이 모두 O(N log N)이다. 
  • 반면에 heap은 정렬을 보장하지 않는다. 최소, 최대 값만을 보장한다. 시간 복잡도는 O(log N)이다.
  • 즉 트리에서 모든 노드가 정렬된 상태를 유지해야한다면 BST, 최소 최댓값을 보장해야한다면 된다면 heap을 사용할 수 있다.

heapq 연습 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

'Language > Python' 카테고리의 다른 글

Python - reduce  (0) 2023.02.11
Python - functools.cmp_to_key (compare sort, 비교 정렬)  (0) 2023.01.19
Python - Counter  (0) 2022.12.06
Python - for/else  (0) 2022.12.02
Python - Regular Expression  (0) 2022.11.30