Skip to content

문제 4 · 스택 구현의 두 가지 방법

문제 4 [2점]

스택stack을 구현할 수 있는 두 가지 방법을 연산이 일어나는 위치에 대해 중점적으로 서술(각 1점)하시오.

풀이 및 해설

스택은 후입선출(LIFO) 구조로, 삽입(push)과 삭제(pop)가 **항상 같은 한쪽 끝(top)**에서만 일어납니다. 이를 만족하도록 두 가지로 구현할 수 있습니다.

(1) 배열array 기반 구현

  • 원소들을 배열에 담고, 마지막으로 채워진 칸의 인덱스를 top으로 둡니다.
  • push는 배열의 **뒤쪽 끝(top+1 위치)**에 원소를 넣고 top을 1 증가, pop뒤쪽 끝의 원소를 꺼내고 top을 1 감소시킵니다.
  • 연산이 배열의 끝에서만 일어나므로 원소 이동이 없어 각 연산은 (평균) O(1)입니다. 배열이 가득 차면 크기를 늘려야 합니다.

(2) 연결 리스트linked list 기반 구현

  • 리스트의 **맨 앞(head)**을 스택의 top으로 삼습니다.
  • push는 새 노드를 head 앞에 붙이고, pophead 노드를 떼어냅니다.
  • 맨 앞에서만 연산하므로 뒤쪽을 훑을 필요가 없어 각 연산이 O(1)이며, 크기 제한이 없습니다.
두 방법 모두 삽입·삭제가 오직 한쪽 끝(배열의 뒤 끝 / 리스트의 앞 끝)에서만 발생

핵심은 어느 한쪽 끝만 사용해야 LIFO가 성립한다는 점입니다.

PDF