본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Stack
한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out) 형식의 자료 구조

스택(Stack)의 연산

편집 원본 편집
  • 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가지

스택 소스코드

편집 원본 편집