문제에 대한 자세한 정보는 백준 | 10828번 : 스택에서 확인할 수 있다.
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
String cmd = st.nextToken();
if (cmd.equals("push")) {
stack.add(Integer.parseInt(st.nextToken()));
} else if (cmd.equals("pop")) {
if (stack.empty())
bw.write("-1\n");
else
bw.write(String.valueOf(stack.pop()) + "\n");
} else if (cmd.equals("size")) {
bw.write(String.valueOf(stack.size()) + "\n");
} else if (cmd.equals("empty")) {
if (stack.empty())
bw.write("1\n");
else
bw.write("0\n");
} else if (cmd.equals("top")) {
if (stack.empty())
bw.write("-1\n");
else
bw.write(String.valueOf(stack.peek()) + "\n");
}
}
br.close();
bw.close();
}
}
메모리 : 15592KB
시간 : 144ms
배열을 사용해도 풀이가 가능한 문제였다. 주어진 명령에 따라서 잘 처리하기만 하면 돼서 어려운 문제는 아니었다.