Stack의 개념
개인적인 Think
하노이탑이라고 하는 흔히 재귀 호출을 배울 때 빠지지 않고 나오는 예제이다. 여기서 우리는 Stack 과 비슷한 것을 느낄 수 있다.
(B 기둥과 C 기둥은 이번 포스팅에서 사용하지 않으니 빼고 생각하자.)
A 기둥에 있는 5번 블록을 빼고 싶다면 어떻게 해야 하는가?
이 의문에 대한 답은 위에 존재하는 4 ~ 1번까지의 블록들을 제거해야 한다는 것이다.
그렇다면 A 기둥에 쌓여있는 탑을 똑같이 쌓아야 할 때 가장 먼저 쌓여야 하는 부분은 무엇일까?
그것 또한 5번 블록이다. 따라서 5번 블록이 먼저 쌓였지만 가장 늦게 빠질 수 있는 것이다.
그러면 가장 먼저 제거할 수 있는 블록은 몇 번일까?
당연하게도 최 상단에 있는 블록인 1번이다.
이러한 구조를 선입 선출
즉, 먼저 쌓인 것은 먼저 나가고 나중에 쌓인 것은 마지막에 나가는 것이다.
push(E item)
pop()
peek()
empty()
search(Object o)
https://gmlwjd9405.github.io/2018/08/03/data-structure-stack.html