일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Chat-GPT
- geoDataFrame
- 크롤링
- 파이썬
- NLP
- 알고리즘
- 코랩 런타임
- 플라스크
- 혁신성장부문
- 괄호 문제
- python buildpacks
- plotly dash
- 셀레니움
- kmeans
- to shp
- Python
- Crawling
- Selenium
- convert to shp
- 인스타그램
- colab runtime
- Merge Repositories
- 2164 카드2
- geopandas
- string to list
- 해시태그
- flask
- clustering
- 웹페이지
- 백준
Archives
- Today
- Total
코딩코딩코딩
파이썬 자료구조 힙_Python heaps 본문
힙은 최댓값 or 최솟값을 찾는 연산을 빠르게 하기 위해 고안된 완전이진트리를 기본으로 하는 트리
heap property: A가 B의 부모노드이면 A의 키값과 B의 키값 사이에는 대소관계가 성립
- 최소 힙(Min Heap): 부모 노드의 키값이 자식 노드의 키값보다 항상 작은 힙
- 최대 힙(Max Heap): 부모 노드의 키값이 자식 노드의 키값보다 항상 큰 힙
* 파이썬 힙 자료구조
heapq 모듈에서 heapq 알고리즘 제공
- heapq는 내장 모듈로 별도의 설치가 필요하지 않음
- 최소 힙 형태로 정렬됨 (0번째 인덱스부터 시작해 k번째 원소가 항상 자식원소들(2k+1, 2K+2)보다 작거나 같음)
힙 함수 명령어
- heapq.heappust(heap, item): item을 heap에 추가
- heapq.heappop(heap): heap에서 가장 작은 원소를 pop + return, 비어있는 경우 IndexError
- heapq.heapify(x): 이미 선언되어 있는 리스트 x를 heap으로 변환, (O(N))
import heapq
# 1 - heappush
heap = []
heapq.heappush(heap, 5)
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)
print(heap)
>>> [5, 1, 2]
# 1.1 - heapify
list_to_heap = [5, 1, 2]
heapq.heapify(list_x)
print(list_to_heap)
>>> [5, 1, 2]
# 원소 삭제
result = heapq.heappop(heap)
print(result)
print(heap)
>>> 1
>>> [2, 5]
파이썬은 최소힙 (min heap)을 기본으로 하는데, 최대힙으로 만들기 위해서는 대소관계를 뒤집어 줄 필요가 있음
: 튜플을 사용하면 되는데, 튜플의 첫 번째 원소를 우선순위로 힙을 구성
# max_heap
heap_items = [1,3,5,6,9]
max_heap = []
for item in heap_items:
heapq.heappust(max_heap, (-item, item)
print(max_heap)
>>> [(-9, 9), (-6, 6), (-5, ,5), (-3, 3), (-1, 1)]
# max_heap 원소 찾기
max_item = heapq.heappop(max_heap)[1]
print(max_item)
>>> 9
'파이썬 > Algorithms' 카테고리의 다른 글
백준(BAEKJOON) 10773 제로 - 파이썬(python) (0) | 2021.12.27 |
---|---|
백준(BAEKJOON) 10828 스택 - 파이썬(python) (0) | 2021.12.24 |
python 아스키코드(ASCII) ord, chr (0) | 2021.11.02 |
백준(BAEKJOON) 2571 수 정렬하기 2 - 파이썬(python) (0) | 2021.10.20 |
프로그래머스(Programmers) Demo Test 나머지 한 점 - 파이썬(python) (0) | 2021.10.06 |
Comments