알고리즘

5. 스택 구현 - 패스트캠퍼스 백엔드 부트캠프 3기

gkss2tpt 2025. 1. 23. 18:09

1. 스택

  • 맨 마지막 위치(top)에서만 자료를 추가, 삭제, 꺼내 올 수 있음 → (중간의 자료를 직접 꺼낼 수 없음)
  • LIFO (Last In First Out, 후입선출) 구조
  • 택배 상자를 쌓아놓은 모양과 유사
  • 가장 최근의 자료를 찾아오거나, 게임에서 히스토리(undo 등)를 유지하고 되돌릴 때 사용할 수 있음
  • 함수의 메모리는 호출 순서에 따라 스택(stack) 구조로 관리됨

2. 스택의 메서드

  • push():
    • top 위치에 새로운 자료를 넣는 연산
  • pop():
    • top 위치에서 자료를 꺼내오는 연산
  • peek():
    • top에 있는 자료를 확인하는 연산(자료를 꺼내지는 않음)
public interface StackInterface<E> {
    public void push(E newItem);
    public E pop();
    public E peek();
    public boolean isEmpty();
    public void popAll();
}
public class MyArrayStack<E> extends MyArrayList<E> implements StackInterface<E> {

    MyArrayList<E> list;

    public MyArrayStack() {
        list = new MyArrayList<>();
    }

    public MyArrayStack(int size) {
        super(size);
    }

    @Override
    public void push(E newItem) {
        list.addElement(newItem);
    }

    @Override
    public E pop() {
        return list.removeElement(list.getSize() - 1);
    }

    @Override
    public E peek() {
        return list.getElement(list.getSize() - 1);
    }

    public boolean isEmpty() {
        return list.isEmpty();
    }

    @Override
    public void popAll() {
        while (!list.isEmpty()) {
            System.out.print(list.removeElement(list.getSize() - 1));
        }
    }
}