백준 10828 - 스택

Updated:

Java

10828 번 - 스택

문제

정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.

  • push X: 정수 X를 스택에 넣는 연산이다.
  • pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 스택에 들어있는 정수의 개수를 출력한다.
  • empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
  • top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.

문제 출처

접근 방법

스택의 기본 사용 법을 요구하는 문제이다.

코드

import java.util.*;
import java.io.*;

public class Main {
	
    public static void main(String []args) throws IOException {        

    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	int n = stoi(br.readLine());
    	int num;
    	String order;
    	
    	StringTokenizer stk; 
    	Stack<Integer> st = new Stack<Integer>();
    	while(n-- != 0) {
    		stk = new StringTokenizer(br.readLine());
    		order = stk.nextToken();
    		switch(order) {
    		case "push":
    			num = stoi(stk.nextToken());
    			st.push(num);
    			break;
    		case "pop":
    			if(st.empty()) {
    				System.out.println(-1);
    				break;
    			}
    			System.out.println(st.peek());
    			st.pop();
    			break;
    		case "size":
    			System.out.println(st.size());
    			break;
    		case "empty":
    			if(st.empty())
    				System.out.println(1);
    			else
    				System.out.println(0);
    			break;
    		case "top":
    			if(st.empty()) {
    				System.out.println(-1);
    				break;
    			}
    			System.out.println(st.peek());
    			break;
    		}
    	}
    	br.close();
    }
    static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}

총평

난이도

⭐★★★★

후기

StringBuilder를 통하여 스택을 구현 할 수 있는 방법도 존재한다.

개선할 점