Learning
토픽 9 / 66·선형 자료구조

스택 (Stack)

스택 (Stack)

후입선출(LIFO, Last In First Out) 원칙을 따르는 선형 자료구조로, 한쪽 끝(top)에서만 삽입(push)과 삭제(pop)가 이루어지는 제한적 접근 구조

목적: LIFO 순서 유지, 함수 호출 관리, 역순 처리, 상태 저장

특징: LIFO, 제한적 접근(top만), 동적 크기, 단순 연산

연산

  • push(item): top에 삽입, O(1)
  • pop(): top 제거 및 반환, O(1)
  • peek()/top(): top 조회(제거 없음), O(1)
  • isEmpty(): 비어있는지 확인, O(1)
  • size(): 요소 개수, O(1)

구현: 배열(고정/빠름) 또는 연결 리스트(동적/유연)

시간 복잡도: push/pop/peek 모두 O(1)

공간 복잡도: O(n)

장점: 단순한 구현, 빠른 연산(O(1)), 명확한 LIFO 의미, 메모리 효율

단점: 제한적 접근(top만), 중간 요소 접근 불가, 스택 오버플로우 위험

적용사례

  • 함수 호출 스택(Call Stack)
  • 괄호 매칭 검사
  • 후위 표기법(Postfix) 계산
  • DFS(깊이우선탐색)
  • 브라우저 뒤로가기
  • Undo 기능
  • 재귀 시뮬레이션

비교: 스택(LIFO/한쪽) vs 큐(FIFO/양쪽)

연관: 큐, 재귀, DFS, 후위 표기법, Call Stack