티스토리 뷰
import
from queue import PriorityQueue
생성
que1 = PriorityQueue() # que1.qsize() = 무한대
que2 = PriorityQueue(maxsize=10) # que2.qsize() = 10
우선순위 큐의 기본 사이즈는 무한대로, 만약 최대 크기를 지정하고자 한다면 maxsize 속성을 사용해 지정한다
데이터 삽입
que.put(7)
que.put(3)
que.put(5)
데이터 삭제
print(que.get()) # 3
print(que.get()) # 5
print(que.get()) # 7
get() 메서드를 사용해 오름차순으로 데이터를 삭제하고, 삭제한 값은 반환한다
우선순위 지정
que.put((5, 'FIVE'))
que.put((1, 'ONE'))
que.put((3, 'THREE'))
만약 오름차순이 아니라 우선순위를 지정하고 우선순위에 의해 삭제 순서를 결정하고 싶다면
데이터를 삽입할 때에 que.put((우선순위, value)) 의 형태로 코드를 작성한다
기본 정렬 기준은 오름차순이므로, 최소 힙의 형태를 가진다
for _ in range(que.qsize()):
print(que.get())
# 출력 결과
(1, 'ONE')
(3, 'THREE')
(5, 'FIVE')
우선순위 큐의 데이터를 하나씩 꺼내서 확인해보면, 우선순위의 오름차순으로 데이터가 삭제됨을 확인할 수 있다
for _ in range(que.qsize()):
print(que.get()[1])
# 출력 결과
ONE
THREE
FIVE
우선순위를 제외하고 값만을 출력할 때는, 우선순위 큐에 튜플의 형태로 저장했으므로 인덱스를 활용한다
기타 메서드
que.qsize() # 우선순위 큐의 크기 확인
que.empty() # 우선순위 큐가 비어있는지 확인
que.full() # 우선순위 큐가 꽉 찼는지 확인
'Computer Science > 자료구조' 카테고리의 다른 글
[이코테] 다이나믹 프로그래밍 (0) | 2022.05.01 |
---|---|
유형별 기출문제 - 그리디 알고리즘(2) (0) | 2021.12.09 |
힙(Heap)의 삭제 연산 과정 (0) | 2021.12.08 |
힙(Heap)의 삽입 연산 과정 (0) | 2021.12.08 |
힙(Heap) (0) | 2021.12.08 |
댓글