BOJ 10828번 스택 자바(java) 풀이
문제 정리
- 스택을 구현하고 다음 명령들을 처리해라.
- push X: 정수 X를 스택에 넣는다.
- pop: 스택에서 가장 위에 있는 정수를 빼고, 출력 한다. 스택이 비었다면 -1 출력
- size: 스택의 크기를 출력한다.
- empty: 스택이 비었다면 1 아니면 0을 출력한다.
- top: 스택의 가장 위에 있는 정수를 출력한다. 만약 비어있다면 -1 출력
push 명령을 제외하고 모두 값을 출력해야 합니다.
문제 풀이
이 문제는 큐문제와 유사합니다. 이도 풀어보시는걸 추천드립니다!!
java에 구현되어 있는 Stack을 이용하여 문제를 풉니다. Stack의 메소드 몇 개만 알면 풀 수 있습니다.
stack을 사용하기 위해서는 다음을 추가해야 합니다.
import java.util.Stack;
- push: push() 메소드를 이용하여 값을 넣습니다.
- pop: push() 메소드를 이용하여 값을 빼고 출력합니다.
- size: size() 메소드를 이용하여 스택의 크기를 출력합니다.
- empty: isEmpty()메소드를 이용하여 비어있는지 확인하고 값을 출력합니다. 비어있다면 true를 반환합니다.
- top: peek() 메소드를 이용하여 스택의 가장 위에 있는 정수를 출력합니다. 이는 이 메소드를 사용하지 않고 가장 마지막에 넣은 값을 이용하여 출력할 수도 있습니다.
백준 10828 스택 자바 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.Stack;
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st = null;
Stack<Integer> stack = new Stack<>();
for(int i=0; i<n; i++){
st = new StringTokenizer(br.readLine(), " ");
switch(st.nextToken()){
case "push":
stack.push(Integer.parseInt(st.nextToken()));
break;
case "pop":
if(!stack.isEmpty())
System.out.println(stack.pop());
else
System.out.println(-1);
break;
case "size":
System.out.println(stack.size());
break;
case "empty":
if(!stack.isEmpty())
System.out.println(0);
else
System.out.println(1);
break;
case "top":
if(!stack.isEmpty())
System.out.println(stack.peek());
else
System.out.println(-1);
break;
}
}
}
}