[Python] When we use deque ?

2024. 2. 18. 13:26코딩

deque는 무엇인가?

"deque"는 파이썬의 collections 모듈에 있는 자료구조 중 하나이다.

"deque"는 "double-ended queue"의 약자로, 큐(queue)의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조이다.

 

 

deque는 리스트(list)와 비슷하지만 몇 가지 측면에서 다른데, 주요 특징과 사용 사례는 다음과 같다:

  1. 양방향 삽입 및 삭제: "deque"는 양쪽 끝에서 원소의 삽입과 삭제가 빠르게 이루어진다. 이는 큐의 FIFO(First-In-First-Out)와 스택의 LIFO(Last-In-First-Out) 모두를 지원한다. 
  2. 고정된 크기의 큐: "deque"는 최대 길이(maxlen) 매개변수를 사용하여 큐의 최대 크기를 제한할 수 있다. 큐가 가득 찬 경우에는 새로운 요소를 삽입하기 위해 큐의 반대쪽에서 요소를 제거한다.
  3. 회전(Rotation): "deque"는 rotate() 메서드를 사용하여 요소를 회전시킬 수 있다. 이는 리스트나 다른 자료구조에서 요소를 옮길 때 유용하다.

deque의 활용 사례 ?

  • 큐(queue)나 스택(stack)과 같은 일반적인 데이터 구조의 구현
  • 최근에 사용된 요소에 빠르게 접근해야 하는 경우 (예: 최근 검색어 목록)
  • 고정된 크기의 데이터 셋을 관리하는 경우

 

Stack이랑 뭐가달라요? deque와 Stack 의 차이점?

 

  1. 구조 및 동작 방식:
    • "deque": 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조이다. 큐와 스택 모두를 결합한 것으로 생각할 수 있다.
    • 스택(Stack): 후입선출(Last-In-First-Out, LIFO) 구조를 가지며, 가장 최근에 추가된 요소가 가장 먼저 제거된다.
  2. 삭제 및 삽입 방식:
    • "deque": 양쪽 끝에서 요소의 삽입과 삭제가 가능하다. 따라서 처음과 끝 모두에서 빠르게 삽입 및 삭제할 수 있다.
    • 스택(Stack): 요소는 스택의 맨 위에만 삽입되고 삭제된다.
  3. 활용:
    • "deque": 양쪽 끝에서의 삽입 및 삭제가 필요한 상황에 유용하다. 큐(Queue)나 스택(Stack)을 모두 구현할 수 있으며, 양쪽 끝에서의 연산이 필요한 다양한 알고리즘에 사용될 수 있다.
    • 스택(Stack): 주로 후입선출(LIFO) 구조로 데이터를 처리하는 상황에 사용된다. 함수 호출의 호출 스택, 수식의 후위 표기법 변환, 웹 브라우저의 뒤로 가기 버튼 등에 활용된다.