Algorithm 1 Queue
Updated:
큐 (Queue)
1. 큐 구조
- 선입선출(FIFO), 후입후출(LILO)
2. 용어
- enqueue : 큐에 데이터를 넣는 기능
- dequeue : 큐에 데이터를 빼는 기능
3. 파이썬 queue 라이브러리 활용해서 큐 자료 구조 사용하기
- queue 라이브러리에는 다양한 큐 구조로 Queue(), LifoQueue(), PriorityQueue() 제공
- 프로그램을 작성할 때 프로그램에 따라 적합한 자료 구조를 사용
- Queue(): 가장 일반적인 큐 자료 구조
- LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조라고 보면 됨)
- PriorityQueue(): 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력
3.1 Queue()로 큐 만들기(FIFO, 가장 일반적임)
import queue
queue = queue.Queue()
# queue 라는 큐 변수에 put() 함수를 사용하여 데이터를 넣어본다.
queue.put('quant')
queue.put(1000)
# 2개의 데이터를 넣고 qsize ()로 큐사이즈를 물어본다.
queue.qsize()
2
# get() 함수로 FIFO에 맞게 'quant'를 꺼내는지 확인해 본다.
queue.get()
'quant'
3.2. LifoQueue()로 큐 만들기 (LIFO)
import queue
queue = queue.LifoQueue()
# queue 라는 큐 변수에 put() 함수를 사용하여 데이터를 넣어본다.
queue.put('quant')
queue.put(1000)
# 2개의 데이터를 넣고 qsize() 로 큐사이즈를 물어본다.
queue.qsize()
2
# get() 함수로 LIFO에 맞게 1000를 꺼내는지 확인해 본다.
queue.get()
1000
3.3. PriorityQueue()로 큐 만들기
import queue
queue = queue.PriorityQueue()
# put() 함수를 이용하여 우선순위 1=python, 2=java, 3=go 로 각각 데이터를 넣어준다.
queue.put((1, 'python'))
queue.put((2., 'java'))
queue.put((3, 'go'))
# qsize() 로 큐사이즈를 물어본다.
queue.qsize()
3
# get() 함수로 우선순위가 가장 빠른 1=python 을 빼내는지 확인한다.
queue.get()
(1, 'python')
4. 리스트 변수로 enqueue, dequeue 구현해보기
q_list = list()
def enqueue(data):
q_list.append(data)
def dequeue():
data = q_list[0]
del q_list[0]
return data
for i in range(1, 11):
enqueue(i)
q_list
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
dequeue()
1
- enqueue() 에서 range(1, 11)로 지정을 해주었기 때문에 리스트에 1부터 10까지 들어가게 되었고 dequeue() 로 확인을 해보니 가장 먼저 들어간 1을 빼낸걸 확인할 수 있다.
Leave a comment