Deep_Dev

๋ฌธ์ œ

์ •์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ์Šคํƒ์„ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๋ช…๋ น์€ ์ด ๋‹ค์„ฏ ๊ฐ€์ง€์ด๋‹ค.

  • push X: ์ •์ˆ˜ X๋ฅผ ์Šคํƒ์— ๋„ฃ๋Š” ์—ฐ์‚ฐ์ด๋‹ค.
  • pop: ์Šคํƒ์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • size: ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • empty: ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด 1, ์•„๋‹ˆ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • top: ์Šคํƒ์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์Šคํƒ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์˜ ์ˆ˜ N (1 ≤ N ≤ 10,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ช…๋ น์ด ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋ฌธ์ œ์— ๋‚˜์™€์žˆ์ง€ ์•Š์€ ๋ช…๋ น์ด ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

์ถœ๋ ฅ

์ถœ๋ ฅํ•ด์•ผํ•˜๋Š” ๋ช…๋ น์ด ์ฃผ์–ด์งˆ ๋•Œ๋งˆ๋‹ค, ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 

14
push 1
push 2
top
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
top

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

2
2
0
2
1
-1
0
1
-1
0
3

์˜ˆ์ œ ์ž…๋ ฅ 2 ๋ณต์‚ฌ

7
pop
top
push 123
top
pop
top
pop

์˜ˆ์ œ ์ถœ๋ ฅ 2 ๋ณต์‚ฌ

-1
-1
123
123
-1
-1

์Šคํƒ์„ ์ดํ•ดํ•˜๊ณ ์žˆ๋Š๋ƒ ๋งˆ๋ƒ์˜ ๋ฌธ์ œ์˜€๋‹ค. 

 

push, pop, size, empty, top 5๊ฐ€์ง€์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ 

๋ฐฐ์—ด๊ณผ ์š”์†Œ์˜๊ฐœ์ˆ˜(size)๋ฅผ ์ด์šฉํ•œ๋‹ค.

( size๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ผ '์š”์†Œ(๋ฐ์ดํ„ฐ)์˜ ๊ฐœ์ˆ˜' ์ด๋‹ค. )

 


 

import java.util.*;
public class Main {

    public static int[] stack;
    public static int size=0;

    public static void main(String[] args) {
        Scanner kb=new Scanner(System.in);
        StringBuilder sb=new StringBuilder();

        int N=kb.nextInt();
        stack = new int[N];

        for(int i=0; i<N; i++){
            String str=kb.next();

            switch(str){

                case "push":
                    push(kb.nextInt());
                    break;

                case "pop":
                    sb.append(pop()).append('\n');
                    break;

                case "size":
                    sb.append(size()).append('\n');
                    break;

                case "empty":
                    sb.append(empty()).append('\n');
                    break;

                case "top":
                    sb.append(top()).append('\n');
                    break;
            }
        }
        System.out.println(sb);
    }

    public static void push(int item){
        stack[size]=item;
        size++;
    }

    public static int pop(){
        if(size==0){
            return -1;
        }
        else{
            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;
        }
        else{
            return 0;
        }
    }

    public static int top(){
        if(size==0){
            return -1;
        }
        else{
            return stack[size-1];
        }
    }
}