본문 바로가기
파이썬 관련 문법

파이썬의 양방향 큐, deque 사용법

by arctis7p 2024. 12. 11.

파이썬의 deque(데크)는 양방향 큐를 구현한 자료구조로, collections 모듈의 클래스 중 하나입니다.

 

deque의 특징은 양 끝에서 빠르게 요소를 추가하거나 제거할 수 있다는 점이 있습니다.

  1. 양방향 접근: 앞과 뒤 양쪽에서 데이터 삽입과 삭제가 가능합니다.
  2. 빠른 성능: 양 끝 요소에 대한 append와 pop연산의 시간 복잡도가 O(1)입니다.
  3. 다양한 활용: 스택과 큐의 기능을 모두 사용할 수 있습니다.

deque 사용법을 알아보겠습니다.

  1. 초기화
    from collections import deque
    
    dq = deque()  # 빈 deque 생성
    dq = deque([1, 2, 3])  # 리스트로 초기화
    • collections 모듈에서 deque 클래스를 임포트 합니다. 참고로 collections 모듈은 파이썬의 내장 모듈이어서 따로 pip install 할 필요가 없습니다.
    • dq를 출력해 보면 deque([1, 2, 3])이 출력됩니다. 이는 deque 객체를 나타내고 양방향 접근을 가능하게 해 줍니다.
  2. 요소 추가
    dq.append(4)  # 오른쪽에 추가
    dq.appendleft(0)  # 왼쪽에 추가
    • 일반적인 appned()처럼 오른쪽에 추가할 수 있고, appendleft()를 사용하여 왼쪽에 추가할 수도 있습니다.
  3. 요소 제거
    dq.pop()  # 오른쪽 끝 요소 제거 및 반환
    dq.popleft()  # 왼쪽 끝 요소 제거 및 반환
    • 일반적인 pop()처럼 오른쪽 끝 요소를 제거 및 반환할 수 있지만, popleft()를 사용하면 왼쪽 끝 요소 또한 제거 및 반환이 가능합니다.
  4. 확장
    dq.extend([5, 6, 7])  # 오른쪽으로 여러 요소 추가
    dq.extendleft([3, 2, 1])  # 왼쪽으로 여러 요소 추가 (역순으로 추가됨)
    • 일반적인 extend()의 사용이 가능하며, extendleft를 통해  왼쪽으로 역순 추가가 가능합니다.
  5. 기타 유용한 메서드
    dq.rotate(2)  # 오른쪽으로 2칸 회전
    dq.rotate(-1)  # 왼쪽으로 1칸 회전
    dq.remove(3)  # 값이 3인 첫 번째 요소 제거
    de.count(2) # 찾고자 하는 요소(2)가 몇 번 등장하는지 반환
    • rotate를 사용해 오른쪽으로 요소를 회전시킬 수 있습니다.
    • 음수를 사용하면 왼쪽으로 회전시킬 수 있습니다.
    • remove를 사용하여 그 인자에 해당하는 첫 번째 요소를 제거할 수 있습니다.
      • 만약 deque 내에 지정된 값이 없는 경우, ValueError 예외가 발생합니다.
    • count를 사용하여 인자에 해당하는 요소가 몇 개인지를 반환할 수 있습니다.

아래는 deque를 사용한 문제풀이 해설들입니다.

 

 

 

# 이 글의 내용 중 일부는 Perplexity AI의 도움을 받아 정보를 수집하고 정리하였으며, 추가적인 연구와 개인적인 견해를 더하였습니다.