[백준_10828] 스택 - JAVA

jm_25·2021년 11월 16일
0

알고리즘

목록 보기
4/40
post-thumbnail

문제출처

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

풀이

  1. 자료구조 Stack을 구현할 수 있는지 묻는 문제이다.
  2. Java에서 제공하는 자료구조인 Stack을 활용하여 쉽게 풀 수 있다.
    Stack을 직접 구현하여도 좋지만, 알고리즘 풀이에서는 최대한 기본으로 제공하는 자료구조를 사용하는게 시간 단축에 도움이 된다.

코드

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

public class Main {
    private static final String PUSH = "push";
    private static final String TOP = "top";
    private static final String SIZE = "size";
    private static final String EMPTY = "empty";
    private static final String POP = "pop";

    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());

        Stack<Integer> stack = new Stack<>();
        int N = Integer.parseInt(stringTokenizer.nextToken());
        for (int i = 0; i < N; i++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            String command = stringTokenizer.nextToken();
            switch (command) {
                case PUSH:
                    int number = Integer.parseInt(stringTokenizer.nextToken());
                    stack.push(number);
                    break;
                case TOP:
                    if (stack.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(stack.peek());
                    }
                    break;
                case SIZE:
                    System.out.println(stack.size());
                    break;
                case EMPTY:
                    if (stack.isEmpty()) {
                        System.out.println(1);
                    } else {
                        System.out.println(0);
                    }
                    break;
                case POP:
                    if (stack.isEmpty()) {
                        System.out.println(-1);
                    } else {
                        System.out.println(stack.pop());
                    }
                    break;
                default:
                    break;
            }
        }
    }
}

채점결과

profile
매일 매일 한 개씩

0개의 댓글