import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(bf.readLine());
Stack<Integer> stack = new Stack<>();
for (int i = 0; i<num; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine(), " ");
String A = st.nextToken();
if (A.equals("push")) {
int B = Integer.parseInt(st.nextToken());
stack.push(B);
}
if (A.equals("top")) {
if (stack.isEmpty()) {
System.out.println("-1");
} else {
System.out.println(stack.peek());
}
}
if (A.equals("size")) {
System.out.println(stack.size());
}
if (A.equals("pop")) {
if (stack.isEmpty()) {
System.out.println("-1");
} else {
System.out.println(stack.pop());
}
}
if (A.equals("empty")) {
if (stack.isEmpty()) {
System.out.println("1");
} else {
System.out.println("0");
}
}
}
}
}
스택을 사용하는 방법을 배우는 문제였다.
Stack<Integer> stack = new Stack<>(); // stack 선언
stack.push(1); // stack에 값 1 추가
stack.pop(); // stack에 값 제거
stack.clear(); // stack의 전체 값 제거 (초기화)
stack.peek(); // stack의 가장 상단의 값 출력
stack.size(); // stack의 크기 출력 : 2
stack.empty(); // stack이 비어있는제 check (비어있다면 true)
stack.contains(1) // stack에 1이 있는지 check (있다면 true)