
스택은 들어있는 맨 위에 값을 가져오는 후입선출의 자료구조이다. 하지만 파이썬에서는 라이브러리는 따로 제공되지 않고 보통 from collections import deque로 라이브러리를 가져와 deque를 사용한다.
가. 클래스로 직접 구현
class Stack:
#리스트를 이용한 스택 구현
def __init__(self):
self.top = []
#스택 크기 반환
def __len__(self) -> bool :
return len(self.top)
#구현함수
#스택에 원소 삽입
def push(self, item):
self.top.append(item)
#스택 가장 위에 있는 원소를 삭제하고 반환
def pop(self):
if not self.isEmpty():
return self.top.pop(-1)
else:
print("Stack underflow")
exit()
#스택 가장 위에 있는 원소를 반환
def peek(self):
if not self.isEmpty():
return self.top[-1]
else:
print("underflow")
exit()
#스택이 비어있는 지를 bool값으로 반환
def isEmpty(self) -> bool :
return len(self.top)==0
나. deque 라이브러리 사용
from collections import deque
dq=deque() # 덱 생성
dq.append() # 덱의 가장 오른쪽에 원소 삽입
dq.popleft() # 가장 왼쪽 원소 반환
dq.appendleft() # 덱의 가장 왼쪽에 원소 삽입
dp.pop() # 가장 오른쪽 원소 반환
dp.clear() # 모든 원소 제거
dp.copy() # 덱 복사
dp.count(x) #x와 같은 원소의 개수를 계산
'''공식문서 : https://docs.python.org/3.8/library/collections.html#collections.deque'''