1. 스택이 무엇일까 : Last In First Out
Stack이라는 단어는 쌓다 라는 의미를 갖고 있어요.
자료구조 관점에서 스택이라는 것도 쌓다는 의미를 생각하시고 공부하시면 쉽게 이해할 수 있어요.
여러가지 책들을 손에 잡히는 순서대로 책상위에 차곡 차곡 쌓았다고 생각해보세요.
제일 바닥에 있는 책이 가장 먼저 쌓아 올린 책이고 위에 책이 가장 나중에 쌓아 올린 책 입니다.
그러면 제가 원하는 책이 나올때 까지 제일 위에 있는 책 - 즉 제일 나중에 쌓은 책 부터 하나 하나 모두 치워 내야 겠죠?
스택은 이렇게 제한적으로 접근할 수 있는 나열 구조를 말하며, 가장 나중에 들어온 책이 가장 먼저 치워 지는 방식 입니다.
그래서 Last In First 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 문서를 참고하여 작성했습니다.
이상입니다!
'Python' 카테고리의 다른 글
파이썬 Python 알고리즘 강의 - 1. 변수와 데이터 타입에 대한 이해 (1) | 2024.01.29 |
---|---|
pyscript 간단 예제 (0) | 2022.10.19 |
파이썬 클래스 - __init__과 클래스 함수 이해하기 (0) | 2022.10.18 |
파이썬 자료구조 Queue는 무엇일까? (0) | 2022.08.27 |
파이썬 리스트 설명과 기본 사용법 (0) | 2022.08.25 |