[Python] deque 사용법
(글쓴날 : 2020.03.30)
* 이 글은 글쓴이가 공부한 내용을 정리하며 올리는 글입니다.
* Python3를 기준으로 작성되었습니다.
Python deque 사용법
1) deque이란?
deque이란 collections 모듈에 속해있으며 단방향 흐름이던 기존 Queue 자료구조와 달리 앞과 뒤(왼쪽과 오른쪽) 양방향에서 삽입 삭제를 할 수 있는 자료구조입니다. (한글 발음은 덱입니다.)
저의 경우, 알고리즘 문제를 풀기 위해 큐 자료구조를 쓸 때 Python의 Queue를 사용하려다 보니 queue.Queue()의 경우 멀티스레딩을 위한 큐여서 시간 효율이 좋지 않아 deque을 찾게 되었습니다.
(보통 BOJ, LeetCode 같은 PS에서 Python으로 큐를 사용해야 할 경우 deque을 큐 대신 사용합니다.)
2) deque 사용법
(1) collections 모듈 및 deque import
1
|
from collections import deque
|
(2) deque 생성
1
2
|
dq = deque()
print(dq) # print결과 : deque([])
|
(3) append() : deque 뒤(오른쪽)에 값 추가
1
2
3
|
dq.append(5)
dq.append(6)
print(dq) # print결과 : deque([5, 6])
|
(4) appendleft() : deque 앞(왼쪽)에 값 추가
1
2
3
|
dq.appendleft(4)
dq.appendleft(3)
print(dq) # print결과 : deque([3, 4, 5, 6])
|
(5) extend() : deque 뒤(오른쪽)에 iterable 객체를 순환하며 값들을 차례로 추가
1
2
|
dq.extend([7, 8, 9])
print(dq) # print결과 : deque([3, 4, 5, 6, 7, 8, 9])
|
(6) extendleft() : deque 앞(왼쪽)에 iterable 객체를 순환하며 값들을 차례로 추가
(주의! 객체의 마지막 값부터 deque에 추가됩니다.)
1
2
|
dq.extendleft([2, 1, 0])
print(dq) # print결과 : deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
|
(7) remove() : deque 안의 특정 값 삭제
1
2
3
4
|
dq.remove(7)
dq.remove(8)
dq.remove(9)
print(dq) # print결과 : deque([0, 1, 2, 3, 4, 5])
|
(8) pop() : deque 뒤(오른쪽)의 값 삭제 후 반환
1
2
3
|
popValue = dq.pop()
print(popValue) # print결과 : 6
print(dq) # print결과 : deque([0, 1, 2, 3, 4, 5])
|
(9) popleft() : deque 앞(왼쪽)의 값 삭제 후 반환
1
2
3
|
popValue = dq.popleft()
print(popValue) # print결과 : 0
print(dq) # print결과 : deque([1, 2, 3, 4, 5])
|
(10) rotate() : deque 안의 값들 회전
(rotate() 함수의 인자로 전달한 값만큼 회전하며 음수를 전달하면 거꾸로 회전합니다.)
1
2
3
4
5
6
7
|
print(dq) # print결과 : deque([1, 2, 3, 4, 5])
dq.rotate(1)
print(dq) # print결과 : deque([5, 1, 2, 3, 4])
dq.rotate(-1)
print(dq) # print결과 : deque([1, 2, 3, 4, 5])
dq.rotate(-1)
print(dq) # print결과 : deque([2, 3, 4, 5, 1])
|
여기까지, Python의 deque 사용법에 대하여 알아봤습니다.
감사합니다!
'Deprecated' 카테고리의 다른 글
[Baekjoon Online Judge] 백준 2606번 바이러스(Python) (0) | 2020.03.31 |
---|---|
[Baekjoon Online Judge] 백준 2178번 미로 탐색(Python) (0) | 2020.03.30 |
[Baekjoon Online Judge] 백준 1697번 숨바꼭질(Python) (0) | 2020.03.30 |
[Baekjoon Online Judge] 백준 15663번 N과 M (9)(Python) (0) | 2020.03.30 |
[Baekjoon Online Judge] 백준 4963번 섬의 개수(Python) (0) | 2020.03.29 |