[백준] 10828번 스택 - Java, 자바

13472 단어 백준백준

문제

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

코드

import java.io.*;
import java.util.Stack;

// 10828번 스택
public class boj_1_10828 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 스택 사용
        Stack<Integer> s = new Stack<>();

        int num = Integer.parseInt(br.readLine());

        for (int i = 0; i < num; i++) {
            String[] input = br.readLine().split(" ");

            switch (input[0]) {
                case "push":
                    s.push(Integer.parseInt(input[1]));
                    break;
                case "pop":
                    if (s.empty()) {
                        bw.write("-1" + "\n");
                    } else {
                        bw.write(s.pop() + "\n");
                    }
                    break;
                case "size":
                    bw.write(s.size() + "\n");
                    break;
                case "empty":
                    if (s.empty()) {
                        bw.write("1" + "\n");
                    } else {
                        bw.write("0" + "\n");
                    }
                    break;
                case "top":
                    if (s.empty()) {
                        bw.write("-1" + "\n");
                    } else {
                        bw.write(s.peek() + "\n");
                    }
                    break;
            }

        }
        bw.flush();
        bw.close();
    }
}

풀이

스택에 관한 정석적인 문제

Stack<Integer> s = new Stack<>();
s.push(i); // 스택의 값 넣기
s.pop(); // 스택의 가장 위의 값 빼고 출력하기 
s.size(); // 스택의 크기
s.peek(); // 스택의 가장 위의 값 조회

위와 같이 쓸 줄 알면 된다.

좋은 웹페이지 즐겨찾기