Oh My Algorithm
Algorithm Guidecomplexity: O(1) push/pop

스택 (Stack)

마지막에 넣은 것을 가장 먼저 꺼내는 후입선출(LIFO) 구조입니다. 한쪽 끝(top)에서만 삽입·삭제가 일어나며, 함수 호출 스택·실행 취소·괄호 검사·DFS의 뼈대가 됩니다.

01스택 (Stack)

스택 시작. 한쪽 끝(top)에서만 넣고 빼는 후입선출(LIFO) 구조입니다.

push(10) · 10을 top 위에 올립니다.

push(24) · 24를 top 위에 올립니다.

push(37) · 37을 top 위에 올립니다.

peek() · top의 값 37을 꺼내지 않고 확인만 합니다.

pop() · top의 37을 제거 대상으로 표시합니다.

37을 꺼냈습니다. top이 24로 한 칸 내려옵니다.

pop() · 이번엔 top의 24를 제거 대상으로 표시합니다.

24를 꺼냈습니다. 마지막에 넣은 값부터 빠지는 LIFO를 확인했습니다.

empty
1 / 9

02 쉽게 이해하기

For Everyone
🔑핵심 동작

넣는 곳과 빼는 곳이 같은 한쪽 끝입니다. 그래서 마지막에 넣은 것이 가장 먼저 나옵니다.

💡쉽게 말하면

한쪽 끝(top)에서만 넣고 뺍니다.

가장 마지막에 넣은 것이 가장 먼저 나와요(후입선출, LIFO).

📍어디에 쓰나
  • 실행 취소(Ctrl+Z)
  • 브라우저 뒤로 가기
  • 괄호 짝 검사

03 파이썬 구현 코드

스택 (Stack)의 핵심 로직을 담은 표준 구현 예시입니다. 가급적 간결하고 읽기 쉬운 코드로 작성되었습니다.

core_implementation.py
class Stack:
    def __init__(self):
        self.items = []

    def push(self, x):
        self.items.append(x)

    def pop(self):
        if not self.items:
            raise IndexError("stack is empty")
        return self.items.pop()

    def peek(self):
        return self.items[-1] if self.items else None

    def is_empty(self):
        return len(self.items) == 0

04 자주 묻는 질문

FAQ
스택 (Stack)란 무엇인가요?+

마지막에 넣은 것을 가장 먼저 꺼내는 후입선출(LIFO) 구조입니다. 한쪽 끝(top)에서만 삽입·삭제가 일어나며, 함수 호출 스택·실행 취소·괄호 검사·DFS의 뼈대가 됩니다.

스택 (Stack)의 시간복잡도는 어떻게 되나요?+

스택 (Stack)의 시간복잡도는 O(1) push/pop 입니다. 시각화의 단계별 진행을 따라가며 왜 이런 복잡도가 나오는지 직접 확인할 수 있습니다.

스택 (Stack)은(는) 어디에 사용하나요?+

실행 취소(Ctrl+Z), 브라우저 뒤로 가기, 괄호 짝 검사.

스택 (Stack)를 쉽게 비유하면?+

넣는 곳과 빼는 곳이 같은 한쪽 끝입니다. 그래서 마지막에 넣은 것이 가장 먼저 나옵니다.