일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- github
- 인공지능
- Python
- 머신러닝
- git
- LV 0
- programmers
- 코테
- Linux
- Ai
- 깃
- db
- 알고리즘
- 정처기
- 자료구조
- ubuntu
- 자바
- Lv 2
- 쿠버네티스
- Kubernetes
- mysql
- 프로그래머스
- Java
- 우분투
- docker
- DevOps
- 코딩테스트
- 데이터베이스
- 리눅스
- 파이썬
Archives
- Today
- Total
Myo-Kyeong Tech Blog
[Python] 우선순위 큐 (Priority Queue) 개념 정리 및 예제 본문
728x90
반응형
우선순위 큐(Priority Queue) 란?
- 데이터의 '우선순위'에 따라 데이터를 관리하는 자료구조
- '큐(Queue)'라는 자료구조를 확장한 개념
- 단순히 데이터를 선입선출(FIFO, First In First Out)하는 방식 대신 데이터마다 설정된 '우선순위'에 따라 데이터의 순서가 정해지는 점이 큐와 다름
이해하기 쉽게 예를 들면, 병원의 응급실에서 환자를 처리하는 방식을 생각해 볼 수 있다. 응급실에선 누가 먼저 왔는지 보다는 환자의 상태가 얼마나 심각한지에 따라 순서가 결정된다. 즉, 상황이 급하거나 중요한 환자가 먼저 치료를 받게 된다. 이처럼 '긴급성'이라는 우선순위에 따라 환자의 치료 순서가 정해지는 것이 우선순위 큐와 유사하다.
우선순위 큐(Priority Queue) 사용
파이썬에서 우선순위 큐를 'heapq' 모듈을 통해 사용할 수 있다.
우선순위 큐를 활용한 간단한 예시이다,
import heapq
# 우선순위 큐를 위한 빈 리스트 생성
priority_queue = []
# 튜플 (우선순위, 데이터) 형식으로 데이터 추가
heapq.heappush(priority_queue, (3, "Apple"))
heapq.heappush(priority_queue, (1, "Banana"))
heapq.heappush(priority_queue, (2, "Cherry"))
# 우선순위가 가장 높은 데이터부터 추출
while priority_queue:
priority, data = heapq.heappop(priority_queue)
print(priority, data)
파이썬의 'heapq' 모듈에서는 튜플의 첫 번째 원소를 우선순위로 간주하고 이를 기반으로 힙을 구성한다.
1 Banana
2 Cherry
3 Apple
코드를 실행하면 다음과 같은 출력을 얻을 수 있다.
우선순위 큐는 데이터가 추가될 때마다 자동으로 정렬되므로, 데이터를 추출할 때는 항상 우선순위가 가장 높은 데이터로부터 추출된다. 위의 예시에서는 "Banana"가 가장 높은 우선순위(1)를 가지므로 가장 먼저 추출된다.
728x90
반응형
'Programming > Python' 카테고리의 다른 글
[Python] print 대신 logging을 사용하는 이유 및 사용법 (3) | 2024.11.14 |
---|---|
[Python] 파이썬 코드 디버깅을 위한 PDB 사용 방법 (0) | 2024.03.18 |
[ Python ] python 문자열 메소드 - 다른 문자열 교체 replace() (0) | 2023.06.03 |
[ Python ] Lambda 함수를 활용한 리스트 정렬 (0) | 2023.06.01 |