백준 10828 - 스택
Updated:
Java
10828 번 - 스택
문제
정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
- push X: 정수 X를 스택에 넣는 연산이다.
- pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 스택에 들어있는 정수의 개수를 출력한다.
- empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
- top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
접근 방법
스택의 기본 사용 법을 요구하는 문제이다.
코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String []args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = stoi(br.readLine());
int num;
String order;
StringTokenizer stk;
Stack<Integer> st = new Stack<Integer>();
while(n-- != 0) {
stk = new StringTokenizer(br.readLine());
order = stk.nextToken();
switch(order) {
case "push":
num = stoi(stk.nextToken());
st.push(num);
break;
case "pop":
if(st.empty()) {
System.out.println(-1);
break;
}
System.out.println(st.peek());
st.pop();
break;
case "size":
System.out.println(st.size());
break;
case "empty":
if(st.empty())
System.out.println(1);
else
System.out.println(0);
break;
case "top":
if(st.empty()) {
System.out.println(-1);
break;
}
System.out.println(st.peek());
break;
}
}
br.close();
}
static int stoi(String str) {
return Integer.parseInt(str);
}
}
총평
난이도
⭐★★★★
후기
StringBuilder를 통하여 스택을 구현 할 수 있는 방법도 존재한다.
개선할 점
없