정리

스택 - 스택과 큐( STACK&QUEUE) 본문

Programming/Algorithm

스택 - 스택과 큐( STACK&QUEUE)

H.J.Park 2020. 7. 12. 14:43

스택(Stack)과 큐(queue)는 데이터를 일시적으로 저장하기 위한 대표적인 자료구조입니다. 이번 게시물에서는 스택에 대해서 정리하겠습니다.

 

  스택이란?

스택은 후입선출(LIFO, Last In First Out)의 구조를 가진 자료구조입니다. 가장 마지막에 푸시된 데이터가 가장 먼저 팝 된다는 것입니다. 

아래는 스택에 대해서 설명하기 전 알고 있으면 좋은 용어들입니다.

  • 푸시(push) : 스택에 데이터를 넣는 행위를 말합니다
  • 팝(pop) : 스택에서 데이터를 꺼내는 행위를 말합니다.
  • 탑(top) : 스택의 맨 꼭대기, 정상을 말합니다. 
  • 바텀(bottom) : 스택의 맨 아래, 바닥을 말합니다.

스택의 원리 그림, 이미지 출처: https://www.programiz.com/dsa/stack

 

  스택 사용 메서드

자바에서 스택은 import java.util.Stack 을 해줌으로써 라이브러리로 사용할 수 있습니다. 다음은 라이버러리가 제공하는 기능들 중 핵심적인 몇 가지 기능들입니다.

  • push() : 스택에 데이터 삽입
  • pop() : 스택에사 가장 위에 있는 데이터를 팝(반환하고 삭제)
  • peek() : 스택에서 가장 위에 있는 데이터를 읽음(반환)
  • isEmpty() : 스택이 비어있는지를 반환
  • size() : 스택에 쌓여있는 데이터 수를 반환

 

아래는 라이브러리를 이용하여 백준 10828 문제를 푼 것입니다. 스택을 구현하는 문제로 처음 스택을 구현할 때 참고하시면 좋을 거 같습니다. 

 

  배열로 스택 구현

이번에는 라이브러리를 사용하지 않고 배열을 통해서 직접 스택을 구현하겠습니다. 배열을 통해서 구현하면 스택의 구조를 이해하고 숙지하는데 더 도움이 될 것 같습니다.

 

아래의 코드는 배열을 이용하여 push(), pop(), peek(), isEmpty(), size(), indexOf(), dump() 기능을 구현한 것입니다. push(), pop(), peek() 같은 경우 EmptyIntStackException() , OverflowIntStackException() 를 통해서 스택이 비었을 경우나 가득 차 있을 경우를 예외 처리 할 수 있도록 했습니다.

 

 

 

 

 

참조하면 좋은 다른 글

[Programming/백준 BOJ] - 백준 10828번: 스택

Comments