본문/내용
1. 스택의 정의와 구조
스택은 데이터의 저장과 처리에 사용되는 자료구조로서, 후입선출(Last In First Out, LIFO) 원리를 따른다. 이는 가장 나중에 저장된 데이터가 먼저 꺼내지는 구조로, 데이터를 넣는 작업을 ‘푸시(Push)’, 데이터를 꺼내는 작업을 ‘팝(Pop)’이라고 한다. 스택의 가장 위에 위치한 데이터만 접근 가능하며, 새로운 데이터는 항상 스택의 가장 위에 쌓인다. 이러한 구조는 계산기에서 수식을 처리하거나 실행순서를 관리하는 데 활용되며, 프로그램의 호출과 복귀, 괄호의 짝 맞추기에도 필수적이다. 스택은 배열(array)이나 연결리스트(linked list)를 이용해 구현 가능하며, 각각의 방법으로 시간 복잡도는 O(1)로 빠르다. 배열을 이용할 경우, 연속된 저장 공간을 사용하여 인덱스로 접근이 간편하지만, 크기 지정이 제한적이다. 반면, 연결리스트 방식은 크기 제한이 없고 동적 확장이 가능하지만 포인터를 이용해야 하여 구현 난이도가 조금 높다. 스택은 메모리 관리와 관련하여 다중 프로그래밍 환경에서 함수 호출 스택, 즉 호출 프레임을 통해서 함수의 매개변수, 지역변수, 반환 주소 등을 저장하는 용도로도 활용된다. 세계적으로 컴…