728x90
반응형
티스토리
우선순위 큐(heapq) 사용하기
우선순위 큐는 데이터를 저장하고 추출할 때 항목들에 우선순위를 부여하여 관리하는 자료구조입니다. 파이썬에서는 heapq 모듈을 사용하여 우선순위 큐를 구현할 수 있습니다. 아래는 파이썬의 우선순위 큐에 대한 간단한 설명과 사용 예시입니다.
1. 코드리뷰
import heapq
# 우선순위 큐를 위한 리스트 변수 생성
priority_queue = []
# 항목 추가
heapq.heappush(priority_queue, (3, 'Code'))
heapq.heappush(priority_queue, (1, 'Cost'))
heapq.heappush(priority_queue, (2, 'Zero'))
heapq.heappush(priority_queue, (4, 'Life'))
# 항목 추출
while priority_queue:
priority, item = heapq.heappop(priority_queue)
print(f'Priority: {priority}, Item: {item}')
결과 :
Priority: 1, Item: Cost
Priority: 2, Item: Zero
Priority: 3, Item: Code
Priority: 4, Item: Life
우선순위 큐의 특징:
각 항목은 우선순위를 가지고 있으며, 이 우선순위에 따라 항목이 관리됩니다.
낮은 우선순위가 높은 우선순위보다 먼저 나옵니다. (오름차순)
heapq 모듈:
heapq 모듈은 최소 힙(min heap)을 제공하여 우선순위 큐를 구현합니다.
최소 힙은 가장 작은 값이 루트에 위치하며, 부모 노드의 값이 항상 자식 노드의 값보다 작습니다.
사용 예시:
우선순위 큐를 사용하려면 리스트를 힙으로 변환하고, heappush 및 heappop 함수를 사용하여 항목을 추가하거나 추출할 수 있습니다.
2. 코드 최적화
최소 힙을 활용한 초기화:
heapq.heapify 함수를 사용하여 리스트를 최소 힙으로 초기화할 수 있습니다.
priority_queue = [(3, 'apple'), (1, 'banana'), (2, 'orange')]
heapq.heapify(priority_queue)
이렇게 하면 heappush 함수를 여러 번 호출하는 대신 리스트를 최소 힙으로 만들 수 있습니다.
수정한 코드 전체 내용
import heapq
# 최소 힙으로 초기화
priority_queue = [(3, 'apple'), (1, 'banana'), (2, 'orange')]
heapq.heapify(priority_queue)
# 항목 추출
while priority_queue:
priority, item = heapq.heappop(priority_queue)
print(f'Priority: {priority}, Item: {item}')
마무리
- 이번 포스팅은 파이썬 heapq 모듈을 활용한 우선순위 큐 에 대해 알아봤습니다.
궁금한 사항은 댓글을 통해서 남겨 주시면 답변 드리겠습니다.
감사합니다.
728x90
반응형
'PYTHON 파이썬' 카테고리의 다른 글
[Python] 숫자 맞추기(Number Guessing Game) , random 난수 생성 모듈 (1) | 2024.01.07 |
---|---|
[파이썬] 임의의 숫자(난수) random 모듈의 기, 랜덤 숫자 만들기 (1) | 2024.01.07 |
[pypi] pip install package , 내가 만든 라이브러리,모듈 등록하기. (2) | 2024.01.02 |
[pydantic] 데이터 유효성 검사 분석 (1) | 2024.01.02 |
파이썬에서 에러 처리 하기 , try except 구문 (2) | 2023.12.31 |