📖 Stack 1
📌 Stack
✅ 스택의 특성
✅ 스택의 구현
스택을 프로그램에서 구현하기 위해서 필요한 자료구조와 연산
-
자료구조 : 자료를 선형으로 저장할 저장소
- 저장소 자체를 스택이라 부르기도 한다.
- 스택에서 마지막 삽입된 원소의 위치를 top이라고 부른다.
-
연산
- 삽입 : 저장소에 자료를 저장한다. 보통 push라고 부른다.
- 삭제 : 저장소에서 자료를 꺼낸다. 꺼낸 자료는 삽입한 자료의 역순으로 꺼낸다. 보통 pop이라고 부른다.
- 스택이 공백인지 아닌지 확인하는 연산 : isEmpty
- 스택의 top에 있는 item(원소)를 반환하는 연산 : peek (확인)
✅ 스택의 삽입 / 삭제 과정
- 빈 스택에 원소 A, B, C를 차례로 삽입한 후 한번 삭제하는 연산 과정

-
push : O(1)
-
pop : O(1)
-
peek : O(1)
모두 상수 연산
✅ 스택 구현 고려 사항
✅ 스택 응용 1 : 괄호 검사
-
괄호 종류 : 소괄호, 중괄호, 대괄호
-
조건
- 왼쪽 괄호 개수와 오른쪽 괄호 개수가 같아야함
- 같은 괄호에서 왼쪽 괄호는 오른쪽 괄호보다 먼저 나와야 함
- 괄호 사이에는 포함 관계만 존재
-
개요
- 왼쪽 괄호를 만나면 스택에 삽입하고, 오른쪽 괄호를 만나면 스택에서 top 괄호를 삭제한 후 오른쪽 괄호와 짝이 맞는지 검사
- 이 때 스택이 비어있으면 조건에 위배, 괄호의 짝이 안맞아도 위배
- 마지막 괄호까지 조사한 후에도 스택에 괄호가 남아잇으면 조건 위배
✅ 스택 응용 2 : Function Call
- 프로그램에서 함수 호출과 복귀에 따른 수행 순서 관리
- 가장 마지막에 호출된 함수가 가장 먼저 실행 완료하고 복귀하는 후입선출 구조
- 함수 호출이 발생하면 호출한 함수 수행에 필요한 지역변수, 매개변수 및 수행 후 복귀할 주소 등의 정보를 스택 프레임에 저장하여 시스템 스택에 삽입
- 함수 실행이 끝나면 시스템 스택의 top 원소(스택 프레임)를 삭제(pop)하면서 프레임에 저장되어 있던 복귀주소를 확인하고 복귀
- 함수 호출과 복귀에 따라 이 과정을 반복하여 전체 프로그램 수행이 종료되면 시스템 스택은 공백 스택에 됨.
✅ 함수 호출과 복귀에 따른 전체 프로그램의 수행 순서

✅ 스택 응용 3 : 실행 취소
- 현재 작업에 대해 실행 취소 / 실행 취소의 취소 같은 작업