[BOJ 백준] 10828: 스택 (자바 | Java)

Jae_0·2023년 5월 1일
0

BOJ 백준

목록 보기
3/4
post-thumbnail

[BOJ 백준] 10828: 스택

https://www.acmicpc.net/problem/10828

1. 문제

  • Stack을 활용한 기본문제이다.

2. PS

자바는 Stack 자료구조가 구현되어 있어, 해당 문제는 쉽게 해결이 가능하다.
Stack(스택)이란?
1. 한 줄을 입력 받고 변수 n에 선언하여 n번 반복한다.
2. 정수형 스택, 명령어를 받을 변수를 선언해준다.
3. StringTokenizer를 통해 명령어 입력을 공백으로 나누어 준다.
4. 입력 받은 명령어를 변수에 넣어주고 if 문을 통해 확인해준다.
5. push일 경우 정수로 변환해주어 스택에 삽입한다.

3. 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
        int n = Integer.parseInt(br.readLine());
        String cmd;

        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            cmd = st.nextToken();

            if (cmd.equals("push")) {
                stack.push(Integer.parseInt(st.nextToken()));
            } else if (cmd.equals("pop")) {
                if (stack.empty()) {
                    sb.append("-1" + "\n");
                } else {
                    sb.append(stack.pop() + "\n");
                }
            } else if (cmd.equals("size")) {
                sb.append(stack.size() + "\n");
            } else if (cmd.equals("empty")) {
                if (stack.empty()) {
                    sb.append("1" + "\n");
                } else {
                    sb.append("0" + "\n");
                }
            } else if (cmd.equals("top")) {
                if (stack.empty()) {
                    sb.append("-1" + "\n");
                } else {
                    sb.append(stack.peek() + "\n");
                }
            }
        }
        System.out.println(sb);
    }
}
profile
같이 성장하는

0개의 댓글