백준/스택
10828 스택
have a good time
2021. 10. 27. 13:37
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
static ArrayList<Integer> stack;
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();
stack = new ArrayList<>();
while(N-->0) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
switch(st.nextToken()) {
case "push" :
push(Integer.parseInt(st.nextToken()));
break;
case "pop" :
sb.append(pop()).append('\n');
break;
case "size" :
sb.append(size()).append('\n');
break;
case "empty" :
sb.append(empty()).append('\n');
break;
case "top" :
sb.append(top()).append('\n');
break;
}
}
System.out.println(sb);
}
public static void push(int N) {
stack.add(N);
}
public static int pop() {
if(stack.isEmpty()) {
return -1;
}else {
int output = stack.get(stack.size()-1);
stack.remove(stack.size()-1);
return output;
}
}
public static int size() {
return stack.size();
}
public static int empty() {
if(stack.isEmpty()) return 1;
return 0;
}
public static int top() {
if(stack.isEmpty()) return -1;
int output = stack.get(stack.size()-1);
return output;
}
}
아래 참고 자료 블로그에서는 스택을 배열을 이용해 구현했지만, 나는 ArrayList를 사용해봤다.
참고 자료 :
https://st-lab.tistory.com/175
[백준] 10828번 : 스택 - JAVA [자바]
www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000..
st-lab.tistory.com