[Python] 파이썬 데크(deque) 정리

권경환·2023년 11월 25일
0

python

목록 보기
8/14
post-thumbnail

파이썬을 이용하여 코딩테스트를 하다가 데크(deque)라는 자료구조를 많이 접하게 되어 확실하게 알고 넘어가는것이 좋을 것 같아 오늘은 이 데크(deque)에 대해서 정리를 해보는 시간을 가지려고 한다!

데크(deque)의 개념

자료구조형으로 잘 알려진 stack 후입선출(LIFO) 가장 나중에 들어온 데이터가 먼저 나가는 구조이고 queue 선입선출(FIFO) 가장 먼저 들어온 데이터가 가장 먼저 나가는 구조로 고정 되어있는 구조이다.

  • 데크(deque) 양방향(앞,뒤)으로 데이터를 추가하거나 제거할 수 있는 자료형이기 때문에 stack처럼 사용할 수도 있고 queue처럼 사용할 수도 있다!

  • 시간복잡도에 따르면 list는 데이터를 추가하거나 제거할때O(n)의 속도, dequeO(1)의 속도로 가장 빠른 속도에 속한다.

데크(deque) 함수 및 사용방법

데크를 사용하기 위해서는 모듈을 collections에 deque를 import해야하고 아래와 같이 배열을 작성한다음 출력하면 다음과 같이 출력된다.

from collections import deque

queue = deque(['one', 'two', 'three'])

print(queue) # deque(['one', 'two', 'three'])
print(*queue) # one two three

함수들은 아래와 같이 구성되어 있다.

append(x)
데크의 오른쪽에 x를 추가합니다.

from collections import deque
queue = deque(['one', 'two'])
queue.append('three')
print(queue) # deque(['one', 'two', 'three'])

appendleft(x)
데크의 왼쪽에 x를 추가합니다.

from collections import deque
queue = deque(['one', 'two'])
queue.appendleft('three')
print(queue) # deque(['three', 'one', 'two'])

pop()
데크의 오른쪽에 값을 가져오는 동시에 데크에서 삭제합니다.

from collections import deque
queue = deque(['one', 'two'])
print(queue.pop()) # two
print(queue) # deque(['one'])

popleft()
데크의 왼쪽에 값을 가져오는 동시에 데크에서 삭제합니다.

from collections import deque
queue = deque(['one', 'two'])
print(queue.popleft()) # one
print(queue) # deque(['two'])

reverse()
데크의 요소들의 순서를 뒤집습니다.

from collections import deque
queue = deque(['one', 'two'])
queue.reverse()
print(queue) # deque(['two', 'one'])

rotate(x)
데크의 요소들을 x만큼 회전 시킵니다.
시계방향은 양수, 반시계 방향은 음수입니다.

from collections import deque
queue = deque(['one', 'two', 'three','four'])
queue.rotate(2) # 시계뱡향으로 요소 2개만큼 회전됌
print(queue) # deque(['three', 'four', 'one', 'two'])

remove(x)
데크의 요소 중 x를 삭제합니다.

from collections import deque
queue = deque(['one', 'two', 'three','four'])
queue.remove('two')
print(queue) # deque(['one', 'three', 'four'])

extend(x)
데크의 오른쪽 끝에 x요소를 붙입니다.

from collections import deque
queue1 = deque(['one', 'two'])
queue2 = ['three','four']
queue1.extend(queue2)
print(queue1) # deque(['one', 'two', 'three', 'four'])

extendleft(x)
데크의 왼쪽 끝에 x요소를 붙입니다.

from collections import deque
queue1 = deque(['one', 'two'])
queue2 = ['three','four']
queue1.extendleft(queue2)
print(queue1) # deque(['three','four', 'one', 'two'])

clear()
데크에서 모든 요소를 제거합니다.

from collections import deque
queue = deque(['one', 'two', 'three','four'])
queue.clear()
print(queue) # deque([])

결론

데크(deque)를 정리하면서 자료구조라는 것은 정말 적절한 환경에서 사용한다면 빠른 속도로 실행될 수 있다는 것을 깨닫는 시간이였습니다.
그리고 다시 한 번 복습하는 시간을 가지게 되니 머리에 잘 정리되는거 같습니다.
앞으로도 이런식으로 배운것들은 까먹지 않도록 적는 습관을 계속해서 유지할 생각입니다!

profile
성장을 좋아하는 주니어 개발자의 블로그

0개의 댓글