Algorithm

백준 10828 스택

dalooong 2023. 7. 9. 14:24
 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

스택이란?

Bottom : 가장 밑에 있는 데이터 또는 그 데이터의 인덱스를 의미한다.

Top : 가장 위에 있는 데이터 또는 그 데이터의 인덱스를 의미한다.

Capacity : 데이터를 담기 위한 용적

size : 데이터의 개수

push: 데이터를 추가하는 작업

pop : 데이터를 삭제하는 작업

package backjoon;

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

public class _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> a = new Stack<>();

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

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

            switch (input[0]) {
                //push
                case "push":
                    a.push(Integer.parseInt(input[1]));
                    break;

                case "pop":
                    if (a.empty()) {
                        bw.write("-1" + "\\n");
                    } else {
                        bw.write(a.pop() + "\\n");
                    }
                    break;
                case "size":
                    bw.write(a.size() + "\\n");
                    break;

                case "empty":
                    if (a.empty()) {
                        bw.write("1" + "\\n");
                    } else {
                        bw.write("0" + "\\n");
                    }
                    break;
                case "top":
                    if (a.empty()) {
                        bw.write("-1" + "\\n");
                    } else {
                        bw.write(a.peek() + "\\n");
                    }
                    break;
            }
        }
        bw.flush();
        bw.close();
    }
}