
내 코드
import java.util.*;
public class Q10828 {
public static int[] Stack;
public static int size = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int N = sc.nextInt();
Stack = new int[N];
for (int i = 0; i < N; i++) {
String command = sc.next();
switch (command) {
case "push":
push(sc.nextInt());
break;
case "pop":
sb.append(pop()).append('\n');
break;
case "size":
sb.append(size).append('\n');
break;
case "empty":
sb.append(isEmpty()).append('\n');
break;
case "top":
sb.append(top()).append('\n');
break;
}
}
System.out.println(sb);
}
public static void push(int num) {
Stack[size] = num;
size++;
}
public static int pop() {
if (size == 0) {
return -1;
} else {
int temp = Stack[size - 1];
Stack[size - 1] = 0;
size--;
return temp;
}
}
public static int isEmpty() {
if (size == 0) {
return 1;
} else {
return 0;
}
}
public static int top() {
if (size == 0) {
return -1;
} else {
return Stack[size - 1];
}
}
}
- 제일 익숙했던, Scanner를 사용했었다. 하지만 Scanner는 매우 느린 함수이기 때문에 시간 초과가 발생한다.
- 이를 방지하기 위해서 StringBuilder를 사용하는 것이 좋다.
- 문자열을 입력받을 때는 next를 사용해서 입력받아야 한다.
- 스택을 사용하는 무난한 문제였던 것 같다.
https://www.acmicpc.net/problem/10828