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는 인덱스 값이 작은 쪽에서 데이터를 추가하고 삭제한다.
Author And Source
이 문제에 관하여(02. 큐(Queue)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seongmin-97/자료구조-02.-큐Queue저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)