🌞Algorithm/🔥Baekjoon

[Baekjoon] 28278_스택 2

뿌야._. 2023. 8. 25. 09:50

Silver IV

문제(출처: 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 출력