/

 

1. 스택이 무엇일까 : Last In First Out

Stack이라는 단어는 쌓다 라는 의미를 갖고 있어요. 

자료구조 관점에서 스택이라는 것도 쌓다는 의미를 생각하시고 공부하시면 쉽게 이해할 수 있어요.
여러가지 책들을 손에 잡히는 순서대로 책상위에 차곡 차곡 쌓았다고 생각해보세요.

제일 바닥에 있는 책이 가장 먼저 쌓아 올린 책이고 위에 책이 가장 나중에 쌓아 올린 책 입니다.

그러면 제가 원하는 책이 나올때 까지 제일 위에 있는 책 - 즉 제일 나중에 쌓은 책 부터 하나 하나 모두 치워 내야 겠죠?

스택은 이렇게 제한적으로 접근할 수 있는 나열 구조를 말하며,  가장 나중에 들어온 책이 가장 먼저 치워 지는 방식 입니다.
그래서 Last IFirst Out 이라고 하지요. 줄여서 LIFO 라는 용어도 사용해요.


Push & Pop ?
자료를 넣는 것을 '밀어넣는다' 하여 푸쉬(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 해요

대표적인 스택의 활용
- 컴퓨터 내부의 프로세스 구조의 함수 동작 방식
- windows os 에서 새로운 프로세르를 실행할 때 가장 최근에 실행한 프로세스가 제일 위에 pop up 됩니다


2. 스택 구현하기

리스트의 append(), pop() 을 통해서 스택과 비슷한 동작하는 것을 알 수 있어요.
append() 가 Push 에 해당하고, pop() 은 pop에 해당 합니다.

List 자료구조의 append와 pop 에 대해서 모르신다면 지난 글을 읽어보시면 좋아요^ㅡ^

2022.08.25 - [분류 전체보기] - 파이썬 리스트 설명과 기본 사용법



파이썬 Python 자료구조 - List 리스트 인덱스/슬라이싱/추가/삭제

>>> stack = list() # 빈 리스트를 만듭니다.
>>> stack
[]
>>> stack.append(1) # 1번째로 추가
>>> stack.append(2) # 2번째로 추가
>>> stack.append(3) # 3번째로 추가
>>> stack.append(4) # 4번째로 추가
>>> stack           # 리스트에는 1,2,3,4 가 들어 있는 상태입니다.
[1, 2, 3, 4]



헌재 stack 리스트의 상태

>>> stack.pop() # 마지막 추가 된 값이 pop 됨
4
>>> stack
[1, 2, 3]
>>> stack.pop() # 그 다음 마지막으로 추가 된 값이 pop 됨
3
>>> stack
[1, 2]



Stack Pop 과정을 나타내면 이렇게 되겠네요.


* 마무리
이번 글에서는 Stack에 대해서 알아보았습니다. 스택을 이해하는데 도움이 될 거에요
스택은 자주 출제 되는 탐색 알고리즘(DFS) 에 사용되는 자료구조 이니, 잘 이해하시는 것이 좋습니다.

글의 내용은 Python documentation - 5.Data Structures 문서를 참고하여 작성했습니다.

이상입니다!

+ Recent posts