blevels

Home / AI / AI 용어사전 / 스택(Stack) — 함수 호출과 실행 순서를 관리하는 자료 구조

TERM

스택(Stack) — 함수 호출과 실행 순서를 관리하는 자료 구조

게시일 2026-04-30수정일 2026-04-30
공식 링크
On this page

함수 A가 함수 B를 호출하고, B가 C를 호출한다. C가 완료되면 B로 돌아가고, B가 완료되면 A로 돌아간다. 이 순서를 관리하는 자료 구조가 스택(Stack)이다. LIFO(Last In, First Out) — 마지막에 들어온 것이 먼저 나간다.

정의

스택(Stack)은 데이터를 순서대로 쌓고, 꺼낼 때 항상 맨 위(Top)에서만 작업하는 자료 구조다. LIFO(Last In, First Out) 원칙을 따른다. 현실 예로는 접시를 쌓는 구조를 들 수 있다. 맨 위 접시부터 꺼내야 하는 것처럼, 스택도 마지막에 추가한 항목을 가장 먼저 꺼낸다. 두 가지 핵심 연산은 Push(맨 위에 추가)와 Pop(맨 위에서 제거)이다.

함수 호출 스택 — 콜 스택(Call Stack)

프로그램 실행 시 런타임은 함수 호출을 관리하기 위해 콜 스택(Call Stack)을 사용한다.

def c():
    return 42

def b():
    return c()

def a():
    return b()

a()

실행 순서는 다음과 같다.

1. a() 호출 → 스택에 a 프레임 추가 2. a 내부에서 b() 호출 → 스택에 b 프레임 추가 3. b 내부에서 c() 호출 → 스택에 c 프레임 추가 4. c 완료 → 스택에서 c 프레임 제거, b로 반환 5. b 완료 → b 제거, a로 반환 6. a 완료 → a 제거

재귀(recursion) 함수가 탈출 조건(Base Case) 없이 계속 호출되면 스택이 가득 차 스택 오버플로우(Stack Overflow) 오류가 발생한다. 오류 메시지에서 RecursionError: maximum recursion depth exceeded가 나타나는 원인이 바로 이것이다.

AD

브라우저 히스토리와 실행 취소

스택 구조는 개발 외 영역에서도 쓰인다.

  • 브라우저 뒤로가기: 방문한 페이지를 스택에 쌓고, 뒤로가기 시 마지막 페이지부터 제거
  • 실행 취소(Undo): 작업 기록을 스택에 저장하고, 취소 시 마지막 작업부터 되돌림
  • JSON·수식 파싱: 중괄호·괄호의 쌍을 검증할 때 스택으로 열고 닫는 괄호를 매칭
def is_balanced(s):
    stack = []
    pairs = {')': '(', ']': '[', '}': '{'}
    for ch in s:
        if ch in '([{':
            stack.append(ch)
        elif ch in ')]}':
            if not stack or stack[-1] != pairs[ch]:
                return False
            stack.pop()
    return len(stack) == 0

print(is_balanced("({[]})"))  # True
print(is_balanced("({[})"))   # False

AI 에이전트 실행 흐름에서의 스택

AI 에이전트는 복합 작업을 처리할 때 스택과 유사한 방식으로 하위 작업(Subtask)을 관리한다. 메인 작업이 하위 작업을 호출하고, 하위 작업 완료 후 메인 작업으로 제어가 반환된다. 재귀(recursion) 기반 트리 탐색, 체인형 도구 호출, 함수형 프로그래밍의 함수 합성 모두 스택 원리에 기반한다.

스택 자료 구조는 큐(queue)와 함께 모든 알고리즘 교육의 기초로 다뤄진다. 두 개념을 비교해 이해하면 데이터 흐름 설계에서 선택 기준이 명확해진다.

관련 용어

  • queue — FIFO 구조의 자료 구조 (먼저 들어온 것이 먼저 나옴)
  • recursion — 함수가 자기 자신을 호출하는 패턴
  • call-stack — 함수 호출 순서를 관리하는 런타임 스택
  • heap — 동적으로 할당되는 메모리 영역
  • dfs — 깊이 우선 탐색, 스택 기반 그래프 탐색 알고리즘
AD