새소식

Study/Today_I_Learned

[자료구조] 큐 (Queue)

  • -
728x90


가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 FIFO 구조입니다. 
LILO 라고 하기도 하고, (last-in, last-out)   먼저 줄을 서는 사람이 먼저 입장하는 것을 떠올리면 이해가 빠를 것 같습니다. 

용어
Enqueue: 큐에 데이터를 넣는 기능
Dequeue: 큐로부터 데이터를 꺼내는 기능

장점

파이썬 Queue 라이브러리에서 사용할 수 있는 class  
▶Queue() : 가장 일반적인 큐 자료구조
▶LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조, last-in,first-out = Stack
▶PriorityQueue() : 데이터마다 우선순위를 넣어서 우선순위가 높은 순으로 데이터 출력이 가능

일반적인 큐의 코드 예제를 다음과 같이 작성해보았습니다. 
queue.Queue() 부분에 class 이름을 수정하여 입력하면 라이브러리 내 다른 클래스도 활용하여 구현할 수 있습니다. 

#일반 큐 구현
import queue

queue_ex = queue.Queue()

queue_ex.put('입력') #데이터 입력하기 
queue_ex.put(1)

queue_ex.qsize() #큐에 있는 데이터 개수 확인하기 

queue_ex.get() #데이터 꺼내기

PriorityQueue를 사용하면 우선순위를 지정, 즉 출력 순서를 사용자가 정해 줄 수도 있습니다. 

#PriorityQueue 구현

import queue

ex_pq = queue.PriorityQueue()

ex_pq.put((10, '열번째'))#tuple 로 우선순위와 같이 입력해야한다. (우선순위/데이터 순서)
ex_pq.put((1, '데이터')) 
ex_pq.put((5, '다섯번째'))

ex_pq.get() #우선순위가 높은 (숫자가 작은) 것부터 출력되므로 (1,'데이터')가 출력된다
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.