코드 전문은 Do it! 자료구조와 함께 배우는 알고리즘 입문 파이썬 편에서 확인할 수 있다.
class FixedStack:
def __init__(self, maxlen = 256):
self.capacity = maxlen
self.__stk = []
def __len__(self):
return len(self.__stk)
def is_empty(self):
return not self.__stk
def is_full(self):
return len(self.__stk) == self.__stk.maxlen
def push(self, value):
if self.is_full():
raise OverflowError
self.__stk.append(value)
def pop(self):
if self.is_empty():
raise IndexError
return self.__stk.pop()
def peek(self):
if self.is_empty():
raise IndexError
return self.__stk[-1]
def clear(self):
self.__stk.clear()
def find(self, value):
try:
return self.__stk.index(value)
except:
return -1
def count(self, value):
return self.__stk.count(value)
def __contains__(self, value):
return self.count(value)
def dump(self):
print(list(self.__stk))
리스트 대신 deque를 사용해서 최대길이를 deque([], maxlen)으로 지정한다면, 이후 함수들에서 따로 예외 처리 구문을 추가할 필요는 없다.
'CS > Python' 카테고리의 다른 글
| 파이썬으로 이진 탐색 트리 구현하기 (0) | 2025.03.27 |
|---|---|
| 파이썬으로 분할 정복을 이용한 정렬 구현하기 (0) | 2025.03.25 |
| 파이썬으로 큐 구현하기 (0) | 2025.03.25 |
| 파이썬으로 해시 테이블 구현하기 (0) | 2025.03.24 |
| 파이썬으로 포인터 기반 연결 리스트 구현하기 (0) | 2025.03.24 |