
스택(Stack)을 구현하고 주어진 명령을 수행하는 문제
1: 정수 X를 스택에 추가 (push)
2: 스택의 맨 위 요소를 제거하고 출력 (pop) (스택이 비어있으면 -1 출력)
3: 스택의 크기 출력 (size)
4: 스택이 비어있으면 1, 아니면 0 출력 (isEmpty)
5: 스택의 맨 위 요소 출력 (스택이 비어있으면 -1 출력) (peek)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
Stack<String> stack = new Stack<>();
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
switch (st.nextToken()) {
case "1":
stack.push(st.nextToken());
break;
case "2":
if(!stack.isEmpty()){
sb.append(stack.pop()).append("\n");
} else {
sb.append("-1").append("\n");
}
break;
case "3":
sb.append(stack.size()).append("\n");
break;
case "4":
if(!stack.isEmpty()){
sb.append("0").append("\n");
} else {
sb.append("1").append("\n");
}
break;
case "5":
if(!stack.isEmpty()){
sb.append(stack.peek()).append("\n");
} else {
sb.append("-1").append("\n");
}
break;
}
}
System.out.println(sb);
}
}