스택까지 왔다.
스택은 앞서 배웠던 Array, Queue와 달리 단독으로도 많이 나오는 유형이다.
그리고 다른 알고리즘, 자료구조에서도 많이 나온다.
그래서 스택은 꼭 꼭 알아두어라.
그렇다면 스택은 왜 자주 출제되고 사용되는가?
이유는 간단하다. Array list based로 제작되기 때문이다.
우리가 리스트는 참 많이 쓴다. 그래서 Stack 도 자연스럽게 쓴다는 것~ 그래서 많이 나오게 되는 것이다.
Stack에 대해 알아두어야 할 내용은 다음과 같다.
1. LIFO(Last in First Out) 후입선출
2. 스택에서 top에 데이터를 추가하는 것을 push, top에서 데이터를 추출하는 것을 pop 이라고 한다.
여기까지만 봐도 우리가 일반적으로 사용하는 리스트와 매우 유사하다는 것을 확인할 수 있다.
Stack의 구조는 이렇게 생각하면 된다. 위로 블록을 차곡 차곡 쌓게되고, 빠질때도 위부터 뺴야하는 것.
일상생활에서는 사람이 가득찬 지하철을 생각해보자. 다음역에서 보면 마지막에 탄 사람이 결국 먼저 나가야 하는 구조다.
# stack을 만들어보자
stack = []
#스택에 넣어보자
stack.apppend(1) #push가 결국 append이다.
stack.apppend(2)
stack.apppend(3)
# 스택에 빼보자
stack.pop()
stack.pop()
스택은 활용하기도 너무 쉽다. 우리가 쓰는 리스트랑 큰 차이가 없다.
Stack 총정리
장점
1. 너무 쉬운 리스트
2. 시간복잡도가 O(1)으로 매우 훌륭하다.
단점
1. 중간에서 빼거나 수정하는게 불편하다.
총평
Stack 이름부터 친근해~
'코딩 테스트' 카테고리의 다른 글
[07-1] 해시 테이블(Hash Table)이란? (1) (1) | 2023.11.14 |
---|---|
[06-2] Stack은 어떻게 쓸까? (1) | 2023.11.09 |
[05-1] 큐(Queue)란? (0) | 2023.11.09 |
[04-2] 연결 리스트의 활용 (2) | 2023.11.09 |
[04-1] 연결 리스트란? (2) | 2023.11.09 |