리스트로 Enqueue, Dequeue 구현하기 (Python)

Kwon, Hyojin·2021년 5월 20일
0

Data Structure

목록 보기
2/3
post-thumbnail

큐(Queue)는 핵심적인 자료구조 중 하나로, 먼저 넣은 데이터가 먼저 나오는 구조로 저장하는 형식을 말합니다.

따라서, 기본 구조는 FIFO(First-In, First-Out) 이며, 일종의 줄을 서는 행위와 같습니다.

운영체제에서는 프로세스를 스케쥴링하는 방식을 이해하는 것이 굉장히 중요한데, 멀티태스킹을 위해 프로세스 스케쥴링 방식을 구현할때 주로 많이 쓰입니다. (추후 공부할 예정,,)

Python에서는 queue 라이브러리를 사용하여 쉽게 구현할 수 있습니다.

import queue

q = queue.Queue()

q.put('coding')
q.put(1)

q.get()  # 'coding'
q.get()  # 1

일반적인 큐 외에 LIFO 큐, 우선순위 큐, 등 다양하게 변형된 정책들을 쓰는 큐를 써야하는 경우가 있습니다.

# LIFO 큐
import queue

lifoq = queue.LifoQueue()

lifoq.put('coding')
lifoq.put(1)

lifoq.get()  # 1
lifoq.get()  # 'coding'
# 우선순위 큐: 가장 우선순위가 높은 데이터를 추출, 낮은 숫자일수록 높은 우선순위
import queue

priorq = queue.PriorityQueue()

priorq.put((10, 'hello'))
priorq.put((5, 1))
priorq.put(15, 'queue')

priorq.get()  # (5, 1)
priorq.get()  # (10, 'hello')
priorq.get()  # (15, 'queue')

Enqueue는 큐에 데이터를 넣는 기능(put), Dequeue는 큐에서 데이터를 꺼내는 기능(get)을 말합니다.

queue 라이브러리를 쓰지 않고 Enqueue, Dequeue를 아~주 간단히 구현해 보겠습니다.

qlist = list()

def enqueue(data):
    qlist.append(data)
    
def dequeue():
    del qlist[0]
enqueue(1)
enqueue(2)
enqueue(3)
qlist  # [1, 2, 3]

dequeue()
dequeue()
qlist  # [3]
profile
파이썬 웹 백엔드 개발자

0개의 댓글