CS/Python

파이썬으로 스택 구현하기

munsik22 2025. 3. 25. 11:43

코드 전문은 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)으로 지정한다면, 이후 함수들에서 따로 예외 처리 구문을 추가할 필요는 없다.