덱(Deque)

·2025년 3월 4일

algorithm

목록 보기
4/9
post-thumbnail

1. Deque

양쪽 끝에서 데이터를 삽입/삭제할 수 있는 자료구조

2. 덱의 주요 연산

append(x) 덱의 오른쪽(뒤쪽) 에 x 추가
appendleft(x) 덱의 왼쪽(앞쪽) 에 x 추가
pop() 덱의 오른쪽(뒤쪽) 요소 제거 후 반환
popleft() 덱의 왼쪽(앞쪽) 요소 제거 후 반환
extend(iterable) 여러 개의 요소를 오른쪽(뒤쪽) 에 추가
extendleft(iterable) 여러 개의 요소를 왼쪽(앞쪽) 에 추가
rotate(n) 덱의 요소를 n만큼 회전 (n > 0이면 오른쪽, n < 0이면 왼쪽)
reverse() 덱의 요소 순서를 뒤집음
len(deque) 덱의 길이 반환
🔹 collections.deque 라이브러리를 사용해서 구현.
🔹 list보다 deque가 빠름 (O(1)로 빠른 삽입/삭제 가능, list는 O(N) 걸릴 수도 있음)

3. 덱 구현 예시

from collections import deque

# 덱 초기화
dq = deque()

# 오른쪽(뒤쪽) 삽입
dq.append(1)    # [1]
dq.append(2)    # [1, 2]

# 왼쪽(앞쪽) 삽입
dq.appendleft(0) # [0, 1, 2]

# 오른쪽(뒤쪽) 삭제
dq.pop()        # [0, 1] -> 2 제거됨

# 왼쪽(앞쪽) 삭제
dq.popleft()    # [1] -> 0 제거됨

print(dq)  # deque([1])

4. 덱 연습문제

10866 - 덱
2346 - 풍선 터뜨리기
18115 - 카드 놓기

profile
develog

0개의 댓글