🌞Algorithm/🔥Baekjoon
[Baekjoon] 28278_스택 2
뿌야._.
2023. 8. 25. 09:50
문제(출처: https://www.acmicpc.net/problem/28278)
< 스택 2 >
문제 풀이
Stack을 사용해서 문제에서 말한 명령대로 구현한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;
public class _28278_ { // 스택 2
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
int num = Integer.parseInt(st.nextToken());
if (num == 1) {
int x = Integer.parseInt(st.nextToken());
stack.add(x);
} else if (num == 2) {
if (!stack.isEmpty()) {
bw.write(stack.pop() + "\n");
} else {
bw.write(-1 + "\n");
}
} else if (num == 3) {
bw.write(stack.size() + "\n");
} else if (num == 4) {
if (stack.isEmpty()) {
bw.write(1 + "\n");
} else {
bw.write(0 + "\n");
}
} else if (num == 5) {
if (!stack.isEmpty()) {
bw.write(stack.peek() + "\n");
} else {
bw.write(-1 + "\n");
}
}
}
bw.flush();
}
}
Main
변수)
n : 명령의 수
stack : Stack <Integer>
num : 명령
- 명령의 수(n) 입력
- 명령의 수(n)만큼 명령 입력
: 명령이 1이면 정수 x를 스택에 넣음
: 명령이 2면 stack이 비어있는지 확인 후 비어있으면 -1 출력, 비어있지 않으면 stack.pop 출력
: 명령이 3이면 stack의 size 출력
: 명령이 4면 stack이 비어있는지 확인 후 비어있으면 1 출력, 비어있지 않으면 0 출력
: 명령이 5면 stack이 비어있는지 확인 후 비어있으면 -1 출력, 비어있지 않으면 stack.peek 출력