[알고리즘]/백준

백준 10828 자바 - 스택

broship 2021. 6. 12. 16:36

문제


 

 

 

문제해결


import java.util.Scanner;

public class B10828 {
    public static int[] stack;
    public static int size = 0;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();//출력에 사용될것

        int n = sc.nextInt();
        stack = new int[n];

        for (int i = 0; i < n; i++) {
            String str = sc.next();
            switch (str){
                case "push":
                    push(sc.nextInt());//push일 경우 한번 더 입력받는다
                    break;
                case "pop":
                    sb.append(pop()).append('\n');//pop한후 출력
                    break;
                case "size":
                    sb.append(size()).append('\n');//size 출력
                    break;
                case "empty":
                    sb.append(empty()).append('\n');//empty 출력
                    break;
                case "top":
                    sb.append(top()).append('\n');//top 출력
                    break;
            }
        }
        System.out.println(sb);
    }

    public static void push(int item){
        stack[size] = item; //stack 맨 위에 값 추가
        size++;
    }

    public static int pop(){
        if(size==0) return -1; //꺼낼게 없을때
        //꺼낼게 있을 때 값 하나 꺼낸 후 stack에서 삭제
        int res = stack[size-1];
        stack[size-1] = 0;
        size--;
        return res;
    }

    public static int size(){
        return size;
    }

    public static int empty(){
        if (size==0) return 1;
        return 0;
    }

    public static int top(){
        if(size==0) return -1; //꺼낼게 없을때
        return stack[size-1]; //맨 위에꺼 꺼냄
    }
}

- 스택을 구현만 할 줄 알면 쉬운 문제였다...

출처 https://st-lab.tistory.com/175

 

[백준] 10828번 : 스택 - JAVA [자바]

www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000..

st-lab.tistory.com