파이썬의 deque(데크)는 양방향 큐를 구현한 자료구조로, collections 모듈의 클래스 중 하나입니다.
deque의 특징은 양 끝에서 빠르게 요소를 추가하거나 제거할 수 있다는 점이 있습니다.
- 양방향 접근: 앞과 뒤 양쪽에서 데이터 삽입과 삭제가 가능합니다.
- 빠른 성능: 양 끝 요소에 대한 append와 pop연산의 시간 복잡도가 O(1)입니다.
- 다양한 활용: 스택과 큐의 기능을 모두 사용할 수 있습니다.
deque 사용법을 알아보겠습니다.
- 초기화
from collections import deque dq = deque() # 빈 deque 생성 dq = deque([1, 2, 3]) # 리스트로 초기화
- collections 모듈에서 deque 클래스를 임포트 합니다. 참고로 collections 모듈은 파이썬의 내장 모듈이어서 따로 pip install 할 필요가 없습니다.
- dq를 출력해 보면 deque([1, 2, 3])이 출력됩니다. 이는 deque 객체를 나타내고 양방향 접근을 가능하게 해 줍니다.
- 요소 추가
dq.append(4) # 오른쪽에 추가 dq.appendleft(0) # 왼쪽에 추가
- 일반적인 appned()처럼 오른쪽에 추가할 수 있고, appendleft()를 사용하여 왼쪽에 추가할 수도 있습니다.
- 요소 제거
dq.pop() # 오른쪽 끝 요소 제거 및 반환 dq.popleft() # 왼쪽 끝 요소 제거 및 반환
- 일반적인 pop()처럼 오른쪽 끝 요소를 제거 및 반환할 수 있지만, popleft()를 사용하면 왼쪽 끝 요소 또한 제거 및 반환이 가능합니다.
- 확장
dq.extend([5, 6, 7]) # 오른쪽으로 여러 요소 추가 dq.extendleft([3, 2, 1]) # 왼쪽으로 여러 요소 추가 (역순으로 추가됨)
- 일반적인 extend()의 사용이 가능하며, extendleft를 통해 왼쪽으로 역순 추가가 가능합니다.
- 기타 유용한 메서드
dq.rotate(2) # 오른쪽으로 2칸 회전 dq.rotate(-1) # 왼쪽으로 1칸 회전 dq.remove(3) # 값이 3인 첫 번째 요소 제거 de.count(2) # 찾고자 하는 요소(2)가 몇 번 등장하는지 반환
- rotate를 사용해 오른쪽으로 요소를 회전시킬 수 있습니다.
- 음수를 사용하면 왼쪽으로 회전시킬 수 있습니다.
- remove를 사용하여 그 인자에 해당하는 첫 번째 요소를 제거할 수 있습니다.
- 만약 deque 내에 지정된 값이 없는 경우, ValueError 예외가 발생합니다.
- count를 사용하여 인자에 해당하는 요소가 몇 개인지를 반환할 수 있습니다.
아래는 deque를 사용한 문제풀이 해설들입니다.
# 이 글의 내용 중 일부는 Perplexity AI의 도움을 받아 정보를 수집하고 정리하였으며, 추가적인 연구와 개인적인 견해를 더하였습니다.
'파이썬 관련 문법' 카테고리의 다른 글
단일 패스 탐색: 투 포인터 기법의 활용 (0) | 2024.12.12 |
---|---|
병합 정렬 쉽게 배우기: 재귀 호출과 병합 과정을 시각적으로 따라가기 (0) | 2024.12.12 |
Counter 클래스: 코딩 테스트를 위한 효율적인 요소 빈도 계산 도구 (1) | 2024.12.11 |
이진 탐색이란 무엇인가? (0) | 2024.12.10 |
ValueError를 피하는 방법: 두 코드의 결과 분석하기 (0) | 2024.12.10 |