프로그래밍의 기초(의사 코드 트레이스)
요소 수 5인 정수형 배열 st와 정수형 변수 top으로 스택을 나타낸다. st의 요소는 모두 0, top은 0에서 시작한다. push(v)는 top에 1을 더한 후 st[top] ← v를 수행하고, pop()은 st[top]의 값을 반환한 후 top에서 1을 뺀다(st의 요소는 바꾸지 않는다). 다음 프로그램을 실행한 후의 top과 st의 조합은?
push(5)
push(8)
pop()
push(3)
push(9)
pop()
push(7)
pop()
- Atop = 2, st = {5, 3, 0, 0, 0}
- Btop = 2, st = {5, 3, 7, 0, 0}
- Ctop = 5, st = {5, 8, 3, 9, 7}
정답과 해설 보기
정답: B. top = 2, st = {5, 3, 7, 0, 0}
push(5), push(8)로 st[1] = 5, st[2] = 8, top = 2가 되고, pop()으로 8을 반환하여 top = 1입니다. push(3)은 st[2]를 3으로 덮어쓰고, push(9)로 st[3] = 9, pop()으로 top = 2로 돌아갑니다. push(7)은 st[3]을 7로 덮어쓰고, 마지막 pop()으로 top = 2가 됩니다. pop()은 top을 줄일 뿐이므로 꺼낸 7은 st[3]에 남아 st = {5, 3, 7, 0, 0}입니다. 스택의 내용으로 유효한 것은 st[1]~st[top]의 5와 3입니다.