반응형

파이썬, 우선순위 큐 사용하기 PriorityQueue

 

데이터를 정렬된 상태로 저장하는  PriorityQueue(우선순위 큐)에 대해 알아보겠습니다. 우선순위 큐는 데이터 추가는 어떤 순서로 해도 상관이 없지만, 제거될 때는 가장 작은 값을 제거하는 독특한 특성을 지닌 자료구조입니다. 

 

클래스 임포트

우선 PriorityQueue 클래스는 queue 내장 모듈에서 제공되기 때문에 파이썬만 설치되어 있으면 별다른 추가 설치없이 임포트할 수 있습니다.

 

from queue import PriorityQueue

 

우선순위 큐 생성

PriorityQueue() 생성자를 이용하면 빈 우선순위 큐를 만들 수 있습니다.

 

que = PriorityQueue()

 

우선순위 큐의 사이즈는 무한대입니다. 특정 최대 크기를 가진 우선순위 큐가 필요하다면 maxsize 지정합니다.

 

que = PriorityQueue(maxsize=8)

 

원소 추가

put() 메서드를 이용하여 우선순위 큐에 원소를 추가할 수 있습니다.

 

que.put(4) que.put(1) que.put(7) que.put(3)

 

원소 삭제

get() 메서드를 이용하여 우선순위 큐에 원소를 삭제할 수 있습니다. get() 메서드는 삭제된 원소를 리턴합니다.

 

print(que.get()) # 1

print(que.get()) # 3

print(que.get()) # 4

print(que.get()) # 7

 

 

정렬 기준 변경

오름차순이 아닌 다른 기준으로 원소가 정렬되기를 원한다면, (우선순위, 값) 튜플 형태로 데이터를 추가/제거하면 됩니다. 파이썬 우선순위 큐는 최소 값부터 꺼내오므로 최대 값부터 꺼내고 싶으면 이런 데이터 구조를 사용해야 합니다.

 

que.put((3, 'Apple'))

que.put((1, 'Banana'))

que.put((2, 'Cherry'))

 

print(que.get()[1]) # Banana

print(que.get()[1]) # Cherry

print(que.get()[1]) # Apple

 

<이상>

 

참조: https://www.daleseo.com/python-priority-queue/

반응형

+ Recent posts