deque

김강민·2024년 3월 21일
0

알고리즘

목록 보기
5/6

deque

1. deque란?

deque는 double-ended queue를 줄여서 표현한 것이다. deque는 앞과 뒤에서 데이터를 처리할 수 있는 양방향 자료형으로, 스택(stack)처럼 써도 되고 큐(queue)처럼 써도 된다.
즉, 스택과 큐 특성 모두 갖고 있으며, 둘을 조합한 형태의 자료구조로 이해하면 된다.

2. deque의 메서드 정리

MethodExplanation
deque.append(item)오른쪽 끝에 새로운 원소를 삽입한다.
deque.appendleft(item)왼쪽 끝에 새로운 원소를 삽입한다.
deque.pop()오른쪽 끝의 원소를 제거 후 반환한다.
deque.popleft()왼쪽 끝의 원소를 제거 후 반환한다.
deque.extend(array)주어진 array 배열을 순환하며 오른쪽에 추가한다.
deque.extend(array)주어진 array 배열을 순환하며 왼쪽에 추가한다.
deque.insert(n, item)n번 index에 원소를 추가한다.
deque.remove(item)입력한 원소를 삭제한다. 같은 원소가 있을 경우 왼쪽부터 삭제된다.
deque.rotate(n)n만큼 원소의 위치를 회전한다. (양수: 시계방향, 음수: 반시계 방향)
deque.clear()모든 원소를 제거한다.
deque.reverse()원소의 위치를 좌우 반전시킨다.

3. deque를 사용할때 얻는 장점

  1. 엄격한 리스트를 만들 수 있다.
  2. 속도가 리스트에 비해 굉장히 빠르다. List = O(n), deque = O(1)
  3. 당연하지만 큐작업이 훨씬 편해진다.

4. 사용 방법

코드 예시

from collections import deque

# deque 생성
queue = deque()

# 요소 추가
my_deque.append(1)
my_deque.appendleft(2)
my_deque.extend([3, 4, 5])
my_deque.extendleft([6, 7, 8])

# 요소 접근
print(my_deque[0])        # 6
print(my_deque[-1])       # 5

for element in my_deque:
    print(element)        # 6, 7, 8, 2, 1, 3, 4, 5 (한 줄씩 출력)

# 요소 제거
removed_element = my_deque.pop()         # 5 제거
removed_left_element = my_deque.popleft()   # 6 제거

# 길이 확인
length = len(my_deque)
print(length)      # 6
profile
인생은 프레임워크처럼, 공부는 라이브러리처럼

0개의 댓글

관련 채용 정보