프로그래밍의 기초(의사 코드 트레이스)

요소 수 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()
  1. Atop = 2, st = {5, 3, 0, 0, 0}
  2. Btop = 2, st = {5, 3, 7, 0, 0}
  3. 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입니다.

이 분야 연습하기 분야로 돌아가기

프로그래밍의 기초(의사 코드 트레이스)의 다른 문제

  1. 요소 수 4인 문자열형 배열 q를 원형으로 사용하는 큐가 있다. head와 tail의 초기값은 1이며, enq(v)는 q[tail] ← v 다음에 tail ← tail mod 4 + 1을 수행하고, deq()는 q[head]의 값을 반환한 다음에 head ← head mod 4 + 1을 수행한다. 다음 프로그램을 실행했을 때 "E"가 저장되는 q의 요소는?
  2. 다음 프로그램은 배열 next로 요소끼리 연결한 연결 리스트를, 인덱스 1인 요소부터 차례로 따라가며 출력한다. 배열의 인덱스는 1부터 시작한다. next의 값 0은 리스트의 끝을 나타낸다. 출력되는 값의 순서는?
  3. 다음 프로그램은 배열 next로 연결한 연결 리스트 A → C → E → D → B의 "C"(인덱스 3) 바로 뒤에 val[6]의 "F"를 삽입한 다음, 인덱스 1인 요소부터 차례로 따라가며 출력한다. 배열의 인덱스는 1부터 시작한다. next의 값 0은 리스트의 끝을 나타낸다. 출력이 A, C, F, E, D, B가 되도록 【a】에 넣을 처리는?
  4. 제어 변수를 5씩 늘리는 다음 for 문을 실행한 후의 c의 값은?
  5. 다음 프로그램의 and는 왼쪽 식이 false일 때는 오른쪽 식을 평가하지 않는다(단락 평가). cnt는 전역 변수이다. 실행한 후의 cnt의 값은?