이번 문제는 스택의 기본중에 기본인 문제였다.
구현 방법은 다양하지만 이번 문제의 시간 제한은 0.5초라서, 구현도 쉽고 시간도 빠른 배열로 구현했다.
코드만 보고도 쉽게 이해할 수 있을 정도로 간단한 문제였다.
import java.io.*;
import java.util.*;
class Main {
static int[] stack;
static int size=0; //데이터의 개수
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
init(n); //초기화
StringTokenizer st;
for(int i=0;i<n;i++){
st = new StringTokenizer(br.readLine()," ");
String command = st.nextToken();
switch (command){
case "push" :
int num = Integer.parseInt(st.nextToken());
push(num);
break;
case "top" :
sb.append(top()).append("\n");
break;
case "size" :
sb.append(size).append("\n");
break;
case "pop" :
sb.append(pop()).append("\n");
break;
case "empty":
sb.append(isEmpty()).append("\n");
break;
}
}
System.out.println(sb);
}
static void init(int n){
stack = new int[n];
}
static int isEmpty(){
if(size==0){
return 1;
}
return 0;
}
static void push(int num){
stack[size] = num;
size++;
}
static int top(){
if(size==0){
return -1;
}
return stack[size-1];
}
static int pop(){
if(size==0){
return -1;
}
int temp = stack[size-1];
stack[size-1] = 0;
size--;
return temp;
}
}