์Šคํƒ(Stack)

Stack์ด๋ž€?

LIFO(Last in First Out, ํ›„์ž… ์„ ์ถœ), ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ํ•œ๊ณณ์œผ๋กœ ์ œํ•œ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

Stack ์˜ˆ์‹œ

  1. ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์˜ ์ฝœ์Šคํƒ, ์Šคํƒ์ด ๋„˜์น˜๊ฒŒ ๋˜๋ฉด StackOverFlow๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
  2. ๋ฌธ์ž์—ด ์—ญ์ˆœ ์ถœ๋ ฅ, ์—ฐ์‚ฐ์ž ํ›„์œ„ํ‘œ๊ธฐ๋ฒ•๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

์ฝ”๋“œ๋กœ ์ดํ•ดํ•˜๋Š” Stack

class Stack {
    List<Integer> list = new ArrayList<>();
    private final int STACK_MAX_SIZE;
    private int top = 0;

    public Stack(int STACK_MAX_SIZE) {
        this.STACK_MAX_SIZE = STACK_MAX_SIZE;
    }

    void push(int data) {
        if(isFull()) return ;

        list.add(top, data);
        top += 1;
    }

    void pop() {
        if(isEmpty()) return;

        top -= 1;
        list.remove(top);
    }

    boolean isEmpty() {
        return list.size() == 0;
    }

    boolean isFull() {
        return list.size() == STACK_MAX_SIZE;
    }
}