본문 바로가기

자료구조알고리즘

[자료구조 - Stack] Stack이란?

먼저 stack의 의미를 한번 살펴보자.

* Stack : 쌓다, 쌓이다, 포개지다의 뜻.

 

즉, 마치 접시를 쌓아 놓은 형태와 비슷한 자료구조, 데이터(data)를 순서대로 쌓는 자료구조를 말한다.

아래 사진을 보면 알다시피 아래부터 쌓여있는 접시는 가장 마지막에 쌓인 접시를 가장 먼저 사용한다. 

 

또 다른 예를 살펴보자.

ex:

한쪽 끝이 막혀있는 골목에 다섯 대의 자동차가 순서대로 좁은 골목을 지나고 있다. 이 경우, 마지막으로 들어온 다섯번째 자동차가 먼저 후진하여 나와야 된다.

--> 여기서 골목은 자료구조 Stack, 자동차 : data로 생각해보자.

이 구조의 특징은, 가장 먼저 들어간 자동차는 가장 나중에 나올 수 있다(FILO : First In Last Out).

바꿔 말하면, 가장 나중에 들어간 자동차가 가장 먼저 나올 수 있다(LIFO: Last In First Out)

이것이 바로 자료구조 중 하나인 Stack의 특징이다. FILO or LIFO, 입력과 출력이 하나의 방향으로 이루어지는 '제한적 접근'

 

 

그럼, Stack의 실사용 예제를 한번 살펴보자.

브라우저의 뒤로가기, 앞으로 가기 기능 구현할 때 사용할 수 있다.

브라우저에서 자료구조 Stack이 사용될때

1. 새로운 페이지로 접속할 때, 현재 페이지를 Prev Stack에 보관(Prev Stack에 밑에서부터 차곡차곡 쌓이는 stack의 형태)

2. 뒤로가기 버튼을 눌러 이전 페이지로 돌아갈때에는, 현재 페이지를 Next Stack에 보관하고, Prev Stack의 가장 나중에 보관된 페이지를 현재 페이지로 가져온다.(Next Stack에 밑에서부터 차곡차곡 쌓이는 stack의 형태이다.)

3. 앞으로 가기 버튼을 눌러 앞서 방문한 페이지로 이동을 원할 때에는 Next Stack의 가장 마지막으로 보관된 페이지를 가져온다.(Last In First Out)

 

위 자료구조 Stack 관련 문제를 보면 좀 더 이해가 될 듯 하다.

https://lion284.tistory.com/110

 

[자료구조 - Stack] 브라우저 뒤로가기 앞으로가기

[ 문제 ] 문제를 해석하자면, actions라는 배열과, start라는 문자열을 입력받는다. * actions : - 행동 순서를 나열한 것 - actions의 요소 중, "-1"은 뒤로 가기, "1"은 앞으로 가기, 문자열은 새로운 페이

lion284.tistory.com