728x90
반응형
Deque(덱/데크, Double Ended Queue)
- Deque(덱/데크)는 데이터 값을 저장하는 기본적인 구조로, 일차원의 선형 자료구조이다.
- Deque(덱/데크)는 Stack(스택)과 Queue(큐)의 연산을 모두 지원한다.
- Deque(덱/데크)와 Queue(큐)의 차이점
- Queue(큐)는 FIFO(선입선출) 방식이다.
- 이때, 양방향 Queue(큐)를 Deque(덱/데크)라고 한다.
- 따라서 Deque(덱/데크)는 양쪽 방향에서 element를 추가하고 제거할 수 있다.
- 양방향 연결리스트(Doubly Linked List)로 구성되어 있다.
- Deque(덱/데크)의 장점
- 양 끝 element의 append와 pop이 압도적으로 빠르다.
- container(컨테이너)의 양 끝 element에 접근하여 삽입이나 삭제를 하는 경우, 아래와 같이 Deque(덱/데크)을 사용하는 것이 아주 효율적이다.
일반 리스트(list) Deque(덱/데크) O(n) O(1) - 대부분의 경우, Deque(덱/데크)는 list(리스트) 보다 월등한데, 특히 push/pop 연산이 빈번하게 발생하는 알고리즘에서 월등한 속도를 보여준다.
Deque(덱/데크) 사용법
- 아래 코드와 같이 import하여 사용한다.
from collections import deque
d = deque()
- Deque(덱/데크)의 method(메소드)
- deque.append(item) : item을 데크의 오른쪽 끝에 삽입한다.
- deque.appendleft(item) : item을 데크의 왼쪽 끝에 삽입한다.
- deque.pop() : 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
- deque.popleft() : 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
- deque.extend(array) : 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.
- deque.extendleft(array) : 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.
- deque.remove(item) : item을 데크에서 찾아 삭제한다.
- deque.rotate(num) : 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽).
- method(메서드) 사용법에 대해서는 백준 덱 문제 풀이를 함께 보면 쉽게 이해할 수 있다.
- method(메서드) 중 rotate() 사용은 아래 코드와 같다.
d = deque([1, 2, 3, 4, 5])
d.rotate(1)
print(d) # 5, 1, 2, 3, 4
d.rotate(-1)
print(d) # 1, 2, 3, 4, 5
https://techblogs.tistory.com/68
[Algorithm] 백준 10866번 덱 (Python)
https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,0
techblogs.tistory.com
728x90
반응형
'Python' 카테고리의 다른 글
[Python] strip(), lstrip(), rstrip() 함수: 문자열 및 공백 제거 함수 (0) | 2023.05.09 |
---|---|
[Python] isalpha(), isdigit() 함수: 문자열 판별(문자, 숫자) 함수 (0) | 2023.05.09 |
[Python] index() 함수 : 리스트에서 특정 원소의 인덱스 찾는 함수 (0) | 2023.02.17 |
[Python] count() 함수 : 문자열, 리스트 개수 집계 함수 (0) | 2023.02.17 |
[Python] upper(), lower(), isupper(), islower(), capitalize(), title() : 대소문자 변환 함수 (0) | 2023.02.17 |