스택

문제 풀러가기

10828

코드

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));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    StringTokenizer st = null;

    int n = Integer.parseInt(br.readLine());

    Stack<Integer> stack = new Stack<Integer>();

    for(int i = 0; i < n; i++) {
      st = new StringTokenizer(br.readLine());
      String input = st.nextToken();

      if(input.equals("push")) {
        int num = Integer.parseInt(st.nextToken());
        stack.add(num);
      } else if(input.equals("pop")) {
        bw.write(stack.isEmpty() ? "-1" : stack.pop() + "");
        bw.newLine();
      } else if(input.equals("size")) {
        bw.write(stack.size() + "");
        bw.newLine();
      } else if(input.equals("empty")) {
        bw.write(stakc.isEmpty() ? "1" : "0");
        bw.newLine();
      } else if(input.equals("top")) {
        bw.write(stack.isEmpty() ? "-1" : stack.peek() + "");
        bw.newLine();
      }
    }

    br.close();
    bw.flush();
    bw.close();
  }
}

설명

처음에 Scanner를 사용했을 때 시간 초과가 발생했다. 계속 바꿔서 시도하다가 BufferedReader를 사용해서 시간초과를 극복했다. Stack 클래스를 직접 구현해보는 것도 좋을꺼 같다.