300x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 리눅스
- BFS
- 알고리즘
- 구글 킥스타트
- DFS
- PYTHON
- 운영체제
- AI
- 프로그래밍
- linux
- 순열
- 백준
- 프로그래머스
- 코딩
- OS
- kick start
- 네트워크
- CSS
- 코딩테스트
- 브루트포스
- 킥스타트
- 동적프로그래밍
- 딥러닝
- 동적 프로그래밍
- 그래프
- dp
- google coding competition
- 파이썬
- nlp
- 코딩 테스트
Archives
- Today
- Total
오뚝이개발자
[Python] deque 사용법 본문
728x90
300x250
deque(double ended queue)는 양방향 연결리스트로 구현되어 있어 양 끝단에 접근이 가능하고 데이터의 삽입, 삭제가 용이하다.(단, 중간 데이터는 제외) 여기선 대표적으로 많이 쓰이는 5가지 operation에 대해 사용법을 정리하려고 한다.
아, 참고로 deque를 사용하려면 import collections.deque를 해주어야 한다.
append(x), appendleft(x)
append(x)는 오른쪽 끝에 데이터 x를 추가, appendleft(x)는 왼쪽 끝에 데이터 x를 추가한다.
리스트와 달리 deque는 doubly linked list라 둘의 시간복잡도는 모두 O(1)이다.
pop(), popleft()
pop()은 일반적으로 알고있는 그 pop 연산이 맞다. 즉, stack의 pop처럼 오른쪽 끝의 원소를 pop한다.
popleft()는 맨 왼쪽 item을 pop한다.
마찬가지로 deque는 doubly linked list이므로 둘의 시간복잡도는 O(1)이다.
첫번째 원소 접근
사실 이부분이 좀 헷갈려서 포스팅하면서 정리하려고 했다.
pop을 하지 않고 맨 처음 원소(가장 왼쪽)를 어떻게 알지? 하는 의문이 들어서 무슨 특별한 연산이 있을 줄 알았는데 그냥 단순히 q[0]을 해주면 된다... ㅎㅎ(허무...)
728x90
300x250
'Language > 파이썬' 카테고리의 다른 글
[Python] 얕은 복사(shallow copy)와 깊은 복사(deep copy) (0) | 2021.04.12 |
---|---|
[Python] list와 tuple의 차이, 사전(dictionary)과 set자료형의 가능한 key값 (0) | 2021.01.11 |
[Python] 파이썬 내장함수 시간복잡도 (0) | 2020.12.15 |
[Python] 파이썬 in 연산 시간복잡도 (0) | 2020.12.02 |
[Python] 파이썬 전역변수 global (0) | 2020.11.16 |
Comments