스택(Stack)

스택(Stack)

마치 접시를 차곡차곡 쌓았다가 맨 위의 접시부터 다시 꺼내어 사용하는 것처럼, 추가된 데이터 원소들을 끄집어내면 마지막에 넣었던 것부터 넣은 순서의 역순으로 꺼내지는 자료 구조를 스택 (stack) 이라고 부릅니다. 이처럼 마지막에 넣은 것이 가장 먼저 꺼내어지는 성질 때문에 스택을 다른 말로는 후입선출 (LIFO; last-in first-out) 자료 구조라고도 합니다.

스택에서 발생하는 오류

연산

배열로 구현한 스택

위 연산 을 코드로 구현 하면 다음과 같다.

class ArrayStack:
    def __init__(self) -> None:
        self.data = []

    def size(self):
        return len(self.data)

    def isEmpty(self):
        return self.size() == 0

    def push(self, item):
        self.data.append(item)

    def pop(self):
        return self.data.pop()

    def peek(self):
        return self.data[-1]

연습문제 - 수식의 유효성 검사

알고리즘 설계

수식을 왼쪽 부터 한 글자씩 읽어서