본문 바로가기

컴퓨터 공학/자료구조와 알고리즘

자료구조 스택(stack)이란? (ft. 그림으로 쉽게 설명)

반응형

자료구조 스택(stack)이란? (ft. 그림으로 쉽게 설명)

 

 

안녕하세요.

 

로스윗의 코딩캠프입니다.

 

오늘은 자료구조 중에서 중요한 스택에 대해서 같이 알아보겠습니다.

 

 

 

반응형

 

 

- 스택이란?

-> 스택은 후입선출의 대표적인 선형 자료구조 중 하나입니다.

 

후입선출이란 영어로는 Last-in-first-out 줄여서 LIFO(리포)라고 합니다.

 

나중에 들어온 데이터가 먼저 나간다는 뜻입니다.

 

쉽게 예를들면,

 

우리가 인터넷 브라우저에서 뒤로가기 버튼 많이 사용하시죠.


뒤로가기 버튼을 누르면 가장 최근에 열었던 마지막 페이지가 나옵니다.


그리고 한 번 더 누르게 되면 그 이전 그 이전 페이지가 나옵니다.


이런식으로 역으로 찾아들어가게 됩니다.

 

또 control+Z로 실행취소를 할 때도 마찬가지 입니다.


가장 최근에 입력했던 마지막 동작의 순서부터 하나씩 역으로 실행취소를 하게 되죠.


이런 구조를 후입선출이라고 합니다.

 

스택을 그림으로 도식화하면 그림과 같은 모양이 나옵니다.

 

 

 

 

스택 도식화 사진

 


순서가 있기는 하지만


Top을 기준으로해서 삽입도 리스트의 마지막에 들어가게 되고 

 

삭제나 데이터를 가져올 때도 리스트의 마지막 부분을 기준으로 해서 이루어지게 됩니다.

 

그래서 먼저 들어간게 나중에 나오게 되고

 

나중에 들어간게 먼저 나오게 되는 모양새가 나오게 됩니다.


이것을 흔히 접시 쌓기에 비유를 많이 합니다.

 

 

 

 

스택은 접시쌓기와 같다
스택은 접시쌓기와 같다

 

 

 

접시를 쌓게 되면 가장 먼저 쌓은 접시가 가장 아래에 있고

 

가장 나중에 쌓은 접시가 가장 위에 있게 되잖아요.


그래서 우리가 접시를 꺼내 쓸때 가장 위에서부터 꺼내 쓰는것처럼 

 

스택도 그와 같은 동작을 한다고 보시면 됩니다.

 

 

 

-스택에서는 중요한 연산 3가지

 

데이터를 넣는 작업인 push

 

데이터를 빼오는 작업인 pop

 

그리고 데이터를 그대로 둔채 가장 위에 있는 데이터만 확인하는 연산인 top, 혹은 peek이 있습니다.

 

그림으로 예를들어 설명해보겠습니다.

 

 

 

스택 연산 설명
스택 연산 설명

 

 

- Push

아직 아무것도 없는 상황에서 push를 하게 되면 첫번재 데이터가 들어오게 되겠죠.

 

여기서 한 번더 push를 하게 되면 그 위에 데이터가 쌓이게 됩니다.

 

 

스택 push
스택 push

 


그리고 한 번더 하면 그 위에 계속해서 쌓일 겁니다.

 

이렇게요.

 

 

 

스택 push
스택 push

 

스택 push
스택 push

 

 

 

- Pop

여기서 pop을하게 되면

 

가장 늦게 들어와서 가장 위에 있는 초록색 노드가 빠지게 될거구 노드는 3개가 남게 됩니다.

 

 

 

 

스택 pop
스택 pop

 

 


여기서 또 pop을하면 연노란색 노드가 빠지고 노드는 2개가 남게 되겠죠.

 

 

 

스택 pop
스택 pop

 

 

- Peek

여기서 이제 peek을 하게 되면

 

2개의 노드중 가장 위에 있는 주황색 노드를 그대로 둔채 데이터만 빼오게 됩니다.

 

 

 

스택 peek
스택 peek

 

 


그러면 데이터를 확인하기위해 가져왔지만 여전히 2개의 노드가 남아있게 되는거죠. 


여기서 다시 pop을 하면 가장 위에 있는 주황색 노드를 가져오면서 스택에는 빨간색 노드만 남게 되겠죠.

 

 

 

스택 pop
스택 pop

 

 


스택에서 중요한 연산인 push, pop, peek에 대해서 알아보았습니다.

 

참 쉽죠~?

 

다음 포스팅에서 이어서 하도록 하겠습니다.

 

로스윗의 코딩 캠프는 미래의 개발자 여러분을 응원합니다!!

 

모두 화이팅입니다!!

 

개발자가 자료구조와 알고리즘을 알아야 하는 진짜 이유

 

개발자가 자료구조와 알고리즘을 알아야 하는 진짜 이유

개발자가 자료구조와 알고리즘을 알아야 하는 진짜 이유 안녕하세요. 로스윗의 코딩캠프에 오신걸 환영합니다. 오늘은 개발자가 자료구조를 왜 공부해야 하는지에 대한 포스팅을 진행해볼까

rosweet-ai.tistory.com

그림으로 쉽게 이해하는 빅오표기법 시간복잡도

 

그림으로 쉽게 이해하는 빅오표기법 시간복잡도

그림으로 쉽게 이해하는 빅오표기법 시간복잡도 안녕하세요. 로스윗의 코딩캠프에 오신 것을 환영합니다. 오늘은 지난 시간에 이어 코딩 필수 개념인 시간복잡도에 대해서 알아보겠습니다. 거

rosweet-ai.tistory.com

 

반응형