티스토리 뷰
우선순위 큐는 각 원소들이 우선순위를 가지고 있고, 높은 우선순위의 원소가 낮은 우선순위의 원소보다 먼저 처리된다.
만약 우선순위가 동일하다면 먼저 들어온 원소를 처리한다.
우선순위는 힙을 통해 구현할 수 있다고 한다.
힙은, 완전 이진 트리로 부모 노드의 값이 항상 자식 노드보다 값이 작거나 큰 트리를 말한다.
부모 노드의 값이 항상 자식 노드보다 작은 경우를 최소힙(Min Heap)이라고 하며, 반대로 부모 노드의 값이 항상 자식 노드보다 큰 것은 최대 힙(Max Heap)이라 한다.
파이썬에는 Priority Queue와 heapq 내장 모듈이 있는데 오늘은 heapq에 대해 살펴보자.
heapq는 최소 힙 구조이고, 가장 작은 요소가 0번째에 위치한다.
또한 모든 k에 대해 heap[k] <= heap[2*k+1] 또는 heap[k] <= heap[2*k+2] 만족한다.
heappush()는 힙의 형태를 유지하면서(우선순위를 지정하여) item을 푸시하고,
pop()은 힙을 유지하며 우선순위가 가장 작은 원소를 pop하여 반환한다.
heapify()를 사용하여 리스트를 heap으로 변환할 수 있다.
그러면 백준과 프로그래머스의 힙 관련 문제풀이들을 살펴보자.
1. 백준 - #1927 최소 힙
https://live-for-myself.tistory.com/206
2. 백준 - #11279 최대 힙
https://live-for-myself.tistory.com/205
3. 백준 - #11286 절댓값 힙
https://live-for-myself.tistory.com/207
4. 프로그래머스 - 더 맵게
https://live-for-myself.tistory.com/18
'알고리즘' 카테고리의 다른 글
[알고리즘] 탐욕법 Greedy Algorithm (0) | 2022.01.23 |
---|---|
[알고리즘] dfs와 bfs (0) | 2022.01.23 |
[알고리즘] 이분 탐색 (0) | 2022.01.23 |
[알고리즘] 동적계획법 (0) | 2022.01.23 |
[CodingTest] Python method 정리 (0) | 2021.11.16 |
- Total
- Today
- Yesterday
- 문자열
- jsp
- 단계별로풀어보기
- 자바스크립트
- web
- 프로그래머스
- 덱
- R
- 브루트 포스
- append
- python
- 자바
- 장고
- 정렬
- 스프링
- CSS
- bootstrap
- Case When
- 파이썬
- jQuery
- 고득점 키트
- html
- Django
- baekjoon
- brute force
- javascript
- 백준
- Oracle
- 큐
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |