큐 (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')
\(\rightarrow\) 큐는 멀티 테스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해 사용
\(\rightarrow\) 큐의 경우 장단점 보다는, 큐의 활용 예로 프로세스 스케줄링 방식을 함께 이해하는 것이 좋음
큐 구현
queue_list = list()
def enqueue(data):
queue_list.append(data)
def dequeue(data):
data = queue_list[0]
del queue_list[0]
return data
'Python > 알고리즘 & 자료구조' 카테고리의 다른 글
해쉬 테이블 (Hash Table) (0) | 2022.08.02 |
---|---|
링크드 리스트 (Linked List) (0) | 2022.08.02 |
스택 (Stack) (0) | 2022.08.02 |
시간 복잡도 (0) | 2022.08.02 |
[Algorithm] / [Python] 그리디 (Greedy) (0) | 2022.06.06 |