..

Stack: LIFO 원리의 선입후출 자료구조

1. Stack이란?

자바의 Stack은 데이터를 한 줄로 쌓아 올리는 형태의 자료구조입니다. 박스를 아래서부터 하나씩 쌓아 올리고, 다시 꺼낼 때는 가장 위에 있는 박스부터 치워야 하는 것과 동일한 원리입니다.

2. 핵심 원칙: LIFO (Last-In-First-Out)

  • 후입선출: 가장 마지막에 들어온 데이터가 가장 먼저 나갑니다.
  • 비유: 좁은 항아리에 물건을 채우고 꺼내는 과정 혹은 켜켜이 쌓인 접시 더미를 생각하면 이해가 빠릅니다.

3. 실무 활용 사례

브라우저 뒤로 가기 (History)

우리가 웹 서핑을 할 때 방문하는 페이지들은 스택에 차곡차곡 쌓입니다. ‘뒤로 가기’ 버튼을 누르면 스택의 가장 위에 있는(현재 페이지) 데이터를 꺼내고(pop), 바로 그 아래에 있던 이전 페이지를 보여줍니다.

작업 실행 취소 (Undo / Redo)

문서 편집기 등에서 작업 내역을 스택에 저장해두고, 사용자가 Ctrl + Z를 누르면 마지막 작업을 스택에서 꺼내어 되돌리는 방식으로 동작합니다.

4. 주요 메소드

  • push(item): 데이터를 스택의 가장 위에 추가합니다.
  • pop(): 가장 위에 있는 데이터를 꺼내고 리스트에서 제거합니다.
  • peek(): 가장 위에 있는 데이터를 꺼내지는 않고 확인만 합니다.
  • empty(): 스택이 비어있는지 확인합니다.

Stack은 데이터의 역순(Reverse) 처리가 필요할 때 가장 단순하면서도 강력한 효율을 보여주는 자료구조입니다.