[자료구조] 스택(Stack)
- Python/알고리즘
- 2021. 1. 16.
반응형
반응형
스택은 큐(Queue)에 반대되는 정책으로 가장 나중에 쌓은 데이터를 가장 먼저 빼내는 데이터 구조이고
한쪽에서만 데이터를 넣고 뺄 수 있는 구조입니다.
- 큐 : FIFO(First-In, Last-Out) or LILO(Last-In, Last-Out)
- 스택 : LIFO(Last-In, First-Out) or FILO(First-In, Last-Out)
큐(Quene)가 생소하다면 다음 포스팅을 보시기 바랍니다.
스택구조는 상자를 쌓는 것과 비슷합니다. 뺄 때도 상자를 맨 밑에서 빼면 쌓은 상자가 무너지니 맨 위부터 빼는 방식으로 구조가 되어있습니다. 아래 그림과 같은 방식으로 움직입니다.
스택에서는 데이터 넣기를 Push, 데이터 빼기는 Pop 라 합니다.
구조가 굉장히 단순합니다. 하지만 무한히 쌓을 수는 없어서 최대갯수를 미리 정해야 할 때도 있는데
그러면 저장 공간을 미리 확보해야 해서 저장 공간의 낭비가 발생할 수 있습니다.
파이썬으로 스택(Stack)을 구현해보겠습니다.
파이썬의 리스트로 구현할 수 있는데요.
리스트는 특성상 데이터를 넣는 순서대로 리스트에 저장되고
pop()은 가장 나중에 넣은 데이터를 빼내는 기능을 수행합니다.
그래서 append, pop으로 스택을 간단하게 구현을 할 수 있습니다.
stack_list = []
#Push
stack_list.append(1)
stack_list.append(2)
stack_list
>>> [1,2] #리스트는 데이터가 순서대로 쌓이는 방식으로 들어감
#Pop
stack_list.pop() # pop() 으로 나중에 넣은 데이터를 빼낸다
>>> 2
stack_list.pop()
>>> 1
스택에 대해 간단히 알아봤는데요.
심플하면서도 실제로 가장 자주 쓰이는 구조이기 때문에 잘 알아두시면 여러모로 좋을 것 같습니다.
이상 포스팅을 마치겠습니다~
'Python > 알고리즘' 카테고리의 다른 글
[Python] 속도 개선 방법 (6) | 2021.09.04 |
---|---|
더블 링크드 리스트(Double linked list) (0) | 2021.01.27 |
[자료구조]링크드 리스트(Linked list) (0) | 2021.01.23 |
[자료구조] 큐(Queue) (0) | 2021.01.13 |
[자료구조] 배열(Array) (0) | 2021.01.09 |