정리
스택 - 스택과 큐( STACK&QUEUE) 본문
스택(Stack)과 큐(queue)는 데이터를 일시적으로 저장하기 위한 대표적인 자료구조입니다. 이번 게시물에서는 스택에 대해서 정리하겠습니다.
스택이란?
스택은 후입선출(LIFO, Last In First Out)의 구조를 가진 자료구조입니다. 가장 마지막에 푸시된 데이터가 가장 먼저 팝 된다는 것입니다.
아래는 스택에 대해서 설명하기 전 알고 있으면 좋은 용어들입니다.
- 푸시(push) : 스택에 데이터를 넣는 행위를 말합니다
- 팝(pop) : 스택에서 데이터를 꺼내는 행위를 말합니다.
- 탑(top) : 스택의 맨 꼭대기, 정상을 말합니다.
- 바텀(bottom) : 스택의 맨 아래, 바닥을 말합니다.
스택 사용 메서드
자바에서 스택은 import java.util.Stack 을 해줌으로써 라이브러리로 사용할 수 있습니다. 다음은 라이버러리가 제공하는 기능들 중 핵심적인 몇 가지 기능들입니다.
- push() : 스택에 데이터 삽입
- pop() : 스택에사 가장 위에 있는 데이터를 팝(반환하고 삭제)
- peek() : 스택에서 가장 위에 있는 데이터를 읽음(반환)
- isEmpty() : 스택이 비어있는지를 반환
- size() : 스택에 쌓여있는 데이터 수를 반환
아래는 라이브러리를 이용하여 백준 10828 문제를 푼 것입니다. 스택을 구현하는 문제로 처음 스택을 구현할 때 참고하시면 좋을 거 같습니다.
배열로 스택 구현
이번에는 라이브러리를 사용하지 않고 배열을 통해서 직접 스택을 구현하겠습니다. 배열을 통해서 구현하면 스택의 구조를 이해하고 숙지하는데 더 도움이 될 것 같습니다.
아래의 코드는 배열을 이용하여 push(), pop(), peek(), isEmpty(), size(), indexOf(), dump() 기능을 구현한 것입니다. push(), pop(), peek() 같은 경우 EmptyIntStackException() , OverflowIntStackException() 를 통해서 스택이 비었을 경우나 가득 차 있을 경우를 예외 처리 할 수 있도록 했습니다.
참조하면 좋은 다른 글 |
Comments