큐 (Queue)

 

1. 큐 구조

가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조

  • FIFO(First-In-First_Out) 또는 LIFO(Last-In-Last-Out) 방식으로 스택과 꺼내는 순서가 반대이다.

 

2. 알아둘 용어

  • Enqueue : 큐에 데이터를 넣는 기능
  • Dequeue : 큐에서 데이터를 꺼내는 기능

 

3. Python의 queue 라이브러리 활용하여 큐 자료 구조 사용하기

Queue 라이브러리에서는 다양한 큐 구조로 Queue(), LifoQueue(), PriorityQueue() 제공

  • Queue() : 가장 일반적인 큐 자료 구조
  • LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조(스택 구조)
  • PriorityQueue() : 데이터마다 우선순위를 넣어, 우선순위가 높은 순으로 데이터 출력
### Queue
import queue

data_queue = queue.Queue()
data_queue.put('Hello')
data_queue.put(2)
print(data_queue.qsize())
# 2
print(data_queue.get())
# Hello
print(data_queue.qsize())
# 1

### LifoQueue()
import queue

data_queue=queue.LifoQueue()
data_queue.put('Hello')
data_queue.put(1)
print(data_queue.qsize())
# 2
print(data_queue.get())
# 1

### PriorityQueue()
import queue

data_queue=queue.PriorityQueue()
data_queue.put((10, 'Hello'))
data_queue.put((5, 1))
data_queue.put((15, 'korea'))
print(data_queue.qsize())
# 3
print(data_queue.get())
# (5, 1)
print(data_queue.get())
# (10, 'Hello')Copy Icon

 

\(\rightarrow\) 큐는 멀티 테스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해 사용

\(\rightarrow\) 큐의 경우 장단점 보다는, 큐의 활용 예로 프로세스 스케줄링 방식을 함께 이해하는 것이 좋음

 

큐 구현

queue_list = list()

def enqueue(data):
	queue_list.append(data)

def dequeue(data):
	data = queue_list[0]
	del queue_list[0]
	return dataCopy Icon

'Develop > Python' 카테고리의 다른 글

[Python] 링크드 리스트 (Linked List)  (0) 2022.08.02
[Python] 스택 (Stack)  (0) 2022.08.02
[Python] 시간 복잡도  (0) 2022.08.02
[Python] collections.Counter  (0) 2022.08.02
[Python] 그리디 (Greedy)  (0) 2022.06.06
욱근욱