02. 큐(Queue)

큐(Queue)

가장 먼저 넣은 데이터를 가장 먼저 꺼내는 자료구조
FIFO(First In First Out), LILO(Last In Last Out) 방식으로 스택(Stack)과 꺼내는 순서가 반대다.

Enqueue는 큐에 데이터를 넣는 기능, Dequeue는 큐에서 데이터를 꺼내는 기능이다.

파이썬과 큐

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

Queue()

일반적인 queue의 기능을 지원한다.

import queue

data = queue.Queue()
data.put(5)
data.put(3)
#Enqueue 입력값으로 원하는 자료형/데이터를 입력할 수 있다.

data.get() 
#Dequeue 꺼내는 값이 정해져있으므로 입력값이 없다. 꺼낸 값을 반환한다.

data.qsize() 
#queue의 사이즈를 반환한다.

LifoQueue()

변형된 큐로 LIFO 정책을 따른다. 나중에 들어온 것이 먼저 나온다.

import queue

data = queue.LifoQueue()
data.put(5)
data.put(3)
#Enqueue 입력값으로 원하는 자료형/데이터를 입력할 수 있다.

data.get() 
#Dequeue 꺼내는 값이 정해져있으므로(나중에 넣은 값) 입력값이 없다. 꺼낸 값을 반환한다.

data.qsize() 
#queue의 사이즈를 반환한다.

PriorityQueue()

우선 순위를 지정해서 우선 순위가 높은 순서대로 출력한다. (2등이 1등보다 나중인 것처럼 숫자가 낮은 것이 우선 순위가 높다.)

import queue

data = queue.PriorityQueue()
data.put((5, "Korea"))
data.put((3, 4))
#Enqueue 입력값으로 (우선순위, 데이터)로 이루어진 튜플을 받는다.

data.get() 
#Dequeue 꺼내는 값이 정해져있으므로(우선 순위가 높은 값) 입력값이 없다. 꺼낸 값을 반환한다.

data.qsize() 
#queue의 사이즈를 반환한다.

Deque와 큐

파이썬의 collections 라이브러리의 deque를 사용하면 큐를 구현하기 더 쉽다.

from collections import deque

queue = deque()

deque.append(data)
deque.appendleft(data)
deque.pop()
deque.popleft()

주로 위 4가지의 메서드를 사용하면 큐를 구현할 수 있으며 len(queue)를 하면 사이즈도 알 수 있다.

append와 pop은 인덱스 값이 큰 쪽에서 데이터를 추가하고, 삭제하고
appendleft와 popleft는 인덱스 값이 작은 쪽에서 데이터를 추가하고 삭제한다.

좋은 웹페이지 즐겨찾기