알고리즘 풀이/백준(BOJ)

[JAVA/백준10828] 스택

닥스훈스 2019. 6. 2. 20:54

1. 문제

 

2. 풀이

자바 Collections클래스를 사용하여 스택을 구현하였다.
명령어 push 3은 문자열 push,공백,숫자 로 이루어진 문자열이므로 명령을 입력했을때 공백이 있을 경우, push명령을 처리하도록 해주었고 다른 명령어들은 switch문을 사용하였다.
이 때, stack.empty()에서 기본으로 제공하는 것은 true, false인데 문제에서 요구하는 것은 1,0이므로 함수를 수정해주었다. 스택의 기본 개념만 이해한다면 쉽게 풀 수 있는 문제였다.

 

3. 소스코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.valueOf(br.readLine()); // 명령의 수

		Stack<Integer> stack = new Stack<Integer>(); // 스택생성

		while (n > 0) {
			String s = br.readLine();
			if (s.length() >= 6 && s.charAt(4) == ' ') {
				Integer word = Integer.parseInt((s.split(" ")[1])); // 공백 다음 숫자 가져오기
				stack.push(word);
			} else {
				switch (s) {
				case "pop":
					if (stack.empty()) {
						System.out.println(-1);
					} else {
						System.out.println(stack.pop());
					}
					break;

				case "size":
					System.out.println(stack.size());
					break;

				case "empty":
					if (stack.empty()) {
						System.out.println(1); // 비어있음
					} else {
						System.out.println(0);
					}
					break;

				case "top":
					if (stack.empty()) {
						System.out.println(-1);
					} else {
						System.out.println(stack.peek());
					}
					break;
				}
			}
			n--;
		}
	}
}