[백준] 10828번: 스택

2022. 1. 8. 22:13알고리즘

https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 


 

코드

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

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(br.readLine());
		Stack<Integer> stack = new Stack<Integer>();

		for (int i = 0; i < n; i++) {
			String str = br.readLine();

			if (str.contains("push")) {
				String cap[] = str.split(" ");
				stack.push(Integer.parseInt(cap[1]));
			} else if (str.equals("top")) {
				try {
					System.out.println(stack.peek());
				} catch (Exception e) {
					System.out.println(-1);
				}
			} else if (str.equals("size")) {
				System.out.println(stack.size());
			} else if (str.equals("pop")) {
				try {
					System.out.println(stack.pop());
				} catch (Exception e) {
					System.out.println(-1);
				}
			} else if (str.equals("empty")) {
				System.out.println((stack.empty() == true ? 1 : 0));
			}
		}
	}
}

 

코드 설명

많이 귀찮다. 입력이 push x 일 때는 Stack 클래스에 있는 push 메서드를 사용하면 되고, 입력이 top일 때는 Stack 클래스의 peek 메소드를 사용하면 되는데, 이 때 스택에 들어있는 정수가 없을 때 예외가 발생하므로 예외처리를 해서 -1을 출력하게 한다.

입력이 size일 때는 Stack 클래스의 size메소드 사용, 입력이 pop일 때는 Stack클래스의 pop 사용하되, 이도 스택에 들어있는 정수가 없을 때 예외가 발생하므로 예외 처리를 해서 -1을 출력하게 한다.

입력이 empty일 때는 Stack클래스의 empty메도르르 사용하는데, true 일때 1을 출력시키고 false일 때는 0을 출력시키게 한다.