kjp0411 님의 블로그

자료구조 - Queue 본문

CS/Data Structure

자료구조 - Queue

kjp0411 2025. 3. 17. 14:57

큐 (Queue)

Queue는 먼저 저장한 데이터가 먼저 출력되는 선입선출 FIFO(First In First Out)형식으로 데이터를 저장하는 자료구조입니다.

  • enqueue : Queue의 rear(뒤)에서 데이터를 추가하는 것
  • dequeue : Queue의 front(앞)에서 데이터를 꺼내는 것

구현 방법으로는 List와 Linked List기반으로 구현할 수 있습니다.

List 기반 구현

Python에서 Queue를 가장 간단하게 구현하는 방법은 list를 이용하는 것입니다.

list의 append 메소드를 사용하면 맨 뒤에 데이터를 추가할 수 있으며

list의 pop 메소드에서 인덱스를 지정하여 사용하면 맨 앞에 데이터를 꺼낼 수 있기 때문입니다.

q = []

# enqueue O(1)
q.append(1) # [1]
q.append(2) # [1, 2]
q.append(3) # [1, 2, 3]

# dequeue O(n)
q.pop(0) # [2, 3]
q.pop(0) # [3]

Linked list 기반 구현

Python에서 정의된 deque의 구조를 보면 doubly linked list로 구현되어 있습니다.

deque는 맨 앞, 맨 뒤 모두 데이터의 삽입과 제거가 가능한 자료구조입니다.

deque의 모든 연산은 O(1)의 시간복잡도를 갖습니다.

from collections import deque

q = deque()

# enqueue O(1)
q.append(1)     # [1]
q.append(2)     # [1, 2]
q.append(3)     # [1, 2, 3]
q.appendleft(0) # [0, 1, 2, 3]

# dequeue O(1)
q.popleft() # [1, 2, 3]
q.popleft() # [2, 3]
q.pop()     # [2]

 

따라서 Python에서 정의된 deque를 사용하는 것이 시간복잡도 부분에서 효율적이라고 볼 수 있습니다.

 

 

'CS > Data Structure' 카테고리의 다른 글

자료구조 - 재귀(Recursion)  (0) 2025.03.25
자료구조 - Hash Table  (0) 2025.03.18
자료구조 - Stack  (0) 2025.03.17
자료구조 - List  (0) 2025.03.13