알고리즘 공부

데크(Deque)

gyk7 2024. 8. 14. 16:04

1. 정의

데크(Deque) : Double-ended-queue의 줄임말

스택은 나중에 들어온 것이 먼저 나가는 LIFO, 큐는 먼저 들어온 것이 먼저 나가는 FIFO의 형태.

데크는 양쪽 모두에서 삽입, 삭제 연산을 할 수 있음.

 

2. 특징

- 양쪽 끝에서 빠른 연산 : deque는 양쪽 끝에서 O(1) 시간 복잡도로 삽입 및 삭제가 가능함. 반면, 리스트는 왼쪽 끝에서의 삽입 및 삭제가 O(n) 시간이 걸릴 수 있음.

- 선형 자료구조 : 데이터를 순차적으로 저장함.

 

2. 데크 구현하기

맨 앞에서 삽입과 삭제 연산이 일어나야 하고, 맨 뒤에서도 삽입과 삭제 연산이 일어나야 하므로 

스택, 큐는 삽입과 삭제 연산을 한 번씩 구현하지만,

데크에서는 삽입과 삭제 연산을 각각 두 번 구현해야 함.

deque의 주요 메서드:

  • append(x): x를 오른쪽 끝에 추가함.
  • appendleft(x): x를 왼쪽 끝에 추가함.
  • pop(): 오른쪽 끝의 요소를 제거하고 반환함.
  • popleft(): 왼쪽 끝의 요소를 제거하고 반환함.
  • extend(iterable): 반복 가능한 객체의 모든 요소를 오른쪽 끝에 추가함.
  • extendleft(iterable): 반복 가능한 객체의 모든 요소를 왼쪽 끝에 추가함. (반대로 추가됨)
  • rotate(n=1): deque를 n만큼 회전시킴. 양수 n은 오른쪽, 음수 n은 왼쪽으로 회전함.
  • reverse(): deque의 요소들을 뒤집음.
  • clear(): deque의 모든 요소를 제거함.

  from collections import deque 작성 후 구현

'알고리즘 공부' 카테고리의 다른 글

N과 M (2)  (0) 2024.08.14
[백준 15649] N과 M(1) python  (0) 2024.08.12
우선순위 큐  (0) 2024.08.10
[백준 1476번] 날짜 계산 python  (0) 2024.08.09
[백준 14888번] 연산자 끼워넣기 python  (0) 2024.08.09