문제(출처: 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 출력
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 25497_기술 연계마스터 임스 (0) | 2023.08.29 |
---|---|
[Baekjoon] 2257_화학식량 (0) | 2023.08.28 |
[Baekjoon] 17952_과제는 끝나지 않아! (0) | 2023.08.24 |
[Baekjoon] 3986_좋은 단어 (0) | 2023.08.23 |
[Baekjoon] 2812_크게 만들기 (0) | 2023.08.22 |