Python Stack 구현

C++에서는 STL (Standard Template Library)에서 Stack 컨테이너를 지원해주지만
Python에서는 따로 제공해주지 않습니다.
List로 간단히 Stack에서 필요한 연산을 구현할 수 있기 때문인데요.

  • 스택 (Stack)은 LIFO 구조입니다.
  • List에서 관련 함수가 많기 때문에 간단하게 Class를 이용해서 구현하여 사용하거나 아니면 List 자체로 그냥 사용하기도 합니다.
  • Stack에서 많이 활용되는 5가지 함수에 대해서 직접 구현해봅시다.
  • Stack은 괄호, 접시, 짝짓기 등의 문제에 사용됩니다.

Top

top은 제일 마지막에 있는 원소를 반환해주면 됩니다. List의 가장 마지막 원소는 -1 Index를 통해 접근할 수 있습니다.

1
stack[-1]

Push

push는 제일 마지막 위치에 원소를 추가해주면 됩니다. List의 append 함수를 이용해 추가합니다.

1
stack.append(num)

Pop

pop은 제일 마지막 원소를 반환해주면 됩니다. List의 pop 함수를 이용할 수 있습니다.

1
stack.pop()

Size

size는 Stack의 현재 사이즈를 반환합니다. List의 len 함수를 이용하면 됩니다.

1
len(stack)

Empty

empty는 stack이 비었는지 판단합니다. List의 len과 0을 비교해주면됩니다.

1
len(stack) == 0

Class로 직접 구현하면 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Stack():
def __init__(self):
self.stack: list = []

def top(self) -> any:
return self.stack[-1]

def push(self, arg: any) -> None:
self.stack.append(arg)

def pop(self) -> None:
self.stack.pop()

def size(self) -> int:
return len(self.stack)

def empty(self) -> bool:
return len(self.stack) == 0