Computer Science/Algorithms

[Python Algorithms] 스택(Stack)

Hannah_ko 2020. 11. 18. 08:45
SMALL

스택(Stack)은 선형 구조의 알고리즘으로 LIFO(Last In First Out) 후입선출의 구조를 가지고 있다.

쉽게 말하면 그릇이 쌓여있는 모습을 생각하면 새로 쌓을 그릇은 맨 위에 쌓이고 그 중 사용할 그릇은

맨 위에 그릇을 사용하는 모습을 생각하면 이해하기 쉽다.

 

스택에서 자료를 넣는 것을 푸쉬(push)라 하고, 자료를 꺼내는 것을 팝(pop)이라 한다.

이런 선형구조를 이용해 리스트의 끝에서만 접근이 일어나기 때문에 제한적인 접근이 가능하다.

 

 

스택 구조

파이썬에서는 스택의 기본 구조를 리스트(list)로 사용한다.

리스트에는 리스트 멤버 함수인 append, push, pop이 있어 코드 구현이 매우 용이하다.

 

def push(item):
    stack.append(item)
    
def pop():
    return stack.pop()
    
if __name__ == '__main__':
    stack = []
    push(1)
    push(2)
    push(3)
    print("stack: ")
    print(stack, "\n")
    print("pop: ")
    while stack:
        print("pop > {}".format(pop()))
    
    print("\n")
    print("after pop")
    print(stack)
    

push 함수를 이용해 stack이라는 리스트에 1, 2, 3을 넣어주었고(push)

이 후, pop 함수를 이용해 while문을 돌며 리스트의 끝에서부터 하나씩 빼주었다(pop).

3 번의 push와 3 번의 pop을 이용해 마지막 stack 리스트에는 아무것도 남지 않은 것을 알 수 있다.

 

 

파이썬은 다른 프로그래밍 언어들에 비해 내장 모듈 함수가 잘 구현되어있어서

자료 구조를 표현하기 쉬워 편한 언어라는 생각이 든다 ㅋㅋ

 


[참고 문헌]

 

1. 위키백과, "스택", ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D

2. 박선주, 영진닷컴, "필수 알고리즘 with 파이썬"

LIST