스택
IT위키
더 많은 작업
- Stack
- 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조
- pop(): 스택에서 가장 위에 있는 항목을 제거한다.
- push(item): item 하나를 스택의 가장 윗 부분에 추가한다.
- peek(): 스택의 가장 위에 있는 항목을 반환한다.
- top(): 이라고도 한다.
- isEmpty(): 스택이 비어 있을 때에 true를 반환한다.
- isFull(): 스택이 가득 찼다면 true를 반환한다.
넣는 순서가 정해진 자료를 넣고 빼기를 섞어 할 때, 어떤 출력 순서가 가능한지 판정한다.
- 어떤 값이 나왔다면, 그보다 먼저 들어갔으면서 아직 나오지 않은 값들은 스택에 남아 있고, 넣은 역순으로만 나올 수 있다
- A, B, C, D 순서로 넣을 때
- D, A, B, C 는 불가능하다. D 를 꺼내려면 A·B·C 가 모두 들어가 있어야 하고, 그 뒤에는 C 가 맨 위라 C → B → A 순으로만 나온다
- B, A, D, C (A·B 넣고 B·A 꺼냄, C·D 넣고 D·C 꺼냄), A, B, C, D (넣자마자 꺼냄), C, B, A, D (A·B·C 넣고 모두 꺼낸 뒤 D) 는 가능하다
- 원소가 n 개일 때 가능한 출력 순서의 수는 카탈랑 수 Cn 이다. 4개면 14가지