프로그래밍의 기초(의사 코드 트레이스)
요소 수 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의 요소는?
enq("A")
enq("B")
enq("C")
deq()
deq()
enq("D")
enq("E")
- Aq[1]
- Bq[3]
- Cq[5]
정답과 해설 보기
정답: A. q[1]
mod는 +보다 먼저 계산하므로, tail ← tail mod 4 + 1은 tail을 1 → 2 → 3 → 4 → 1로 순환시킵니다. A, B, C는 q[1]~q[3]에 들어가고 tail = 4입니다. 두 번의 deq()로 A와 B가 꺼내지고 head = 3이 됩니다. D는 q[4]에 들어가고 tail이 4 mod 4 + 1 = 1로 돌아가며, E는 비어 있는 q[1]에 들어갑니다. 요소를 앞으로 당기지 않고, 꺼내서 빈 자리를 재사용하는 것이 원형 큐(링 버퍼)입니다.