문제출처
https://www.acmicpc.net/problem/10828
풀이
- 자료구조 Stack을 구현할 수 있는지 묻는 문제이다.
- Java에서 제공하는 자료구조인 Stack을 활용하여 쉽게 풀 수 있다.
Stack을 직접 구현하여도 좋지만, 알고리즘 풀이에서는 최대한 기본으로 제공하는 자료구조를 사용하는게 시간 단축에 도움이 된다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
private static final String PUSH = "push";
private static final String TOP = "top";
private static final String SIZE = "size";
private static final String EMPTY = "empty";
private static final String POP = "pop";
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
Stack<Integer> stack = new Stack<>();
int N = Integer.parseInt(stringTokenizer.nextToken());
for (int i = 0; i < N; i++) {
stringTokenizer = new StringTokenizer(bufferedReader.readLine());
String command = stringTokenizer.nextToken();
switch (command) {
case PUSH:
int number = Integer.parseInt(stringTokenizer.nextToken());
stack.push(number);
break;
case TOP:
if (stack.isEmpty()) {
System.out.println(-1);
} else {
System.out.println(stack.peek());
}
break;
case SIZE:
System.out.println(stack.size());
break;
case EMPTY:
if (stack.isEmpty()) {
System.out.println(1);
} else {
System.out.println(0);
}
break;
case POP:
if (stack.isEmpty()) {
System.out.println(-1);
} else {
System.out.println(stack.pop());
}
break;
default:
break;
}
}
}
}
채점결과