백준 온라인 저지
정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다.
둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다.
문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
14
push 1
push 2
top
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
top
2
2
0
2
1
-1
0
1
-1
0
3
7
pop
top
push 123
top
pop
top
pop
-1
-1
123
123
-1
-1
사용자에게 입력을 받는 형태와, Method 파라미터로 입력 받는 형태를 모두 정의함
import java.util.ArrayList;
import java.util.Scanner;
public class Matter10828 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력 받을 명령 수
int commandCnt = sc.nextInt();
// 스택 : ArrayList
ArrayList<Integer> stack = new ArrayList<>();
sc.nextLine();
for(int i=0; i<commandCnt; i++) {
// 명령어
String command = sc.nextLine();
// 명령어 인자
String[] params = command.split(" ");
switch (params[0]) {
case "push":
stack.add(Integer.parseInt(params[1]));
break;
case "pop":
if(stack.size() == 0)
System.out.println(-1);
else {
System.out.println(stack.get(stack.size() - 1));
stack.remove(stack.size() - 1);
}
break;
case "size": System.out.println(stack.size());
break;
case "empty":
if(stack.size() == 0)
System.out.println(1);
else
System.out.println(0);
break;
case "top":
if(stack.size() == 0)
System.out.println(-1);
else
System.out.println(stack.get(stack.size() - 1));
break;
default : break;
}
}
}
}