정보처리기사 실기C언어C 큐난이도 3MCQ

정보처리기사 실기 C 큐 기출문제 #3892

문제

다음 C 코드의 출력 결과는?

C
#include <stdio.h> #define SIZE 3 typedef struct { int a[SIZE]; int front; int rear; } Queue; void enq(Queue* q, int val){ q->a[q->rear] = val; q->rear = (q->rear + 1) % SIZE; } int deq(Queue* q) { int val = q->a[q->front]; q->front = (q->front + 1) % SIZE; return val; } int main() { Queue q = {{0}, 0, 0}; enq(&q, 1); enq(&q, 2); deq(&q); enq(&q, 3); int first = deq(&q); int second = deq(&q); printf("%d 그리고 %d", first, second); return 0; }

① 1 그리고 2 ② 2 그리고 3 ③ 1 그리고 3 ④ 3 그리고 2

정답

2

해설

정답: 2. 1과 2를 삽입한 뒤 1을 제거하고 3을 삽입한다. 이후 두 번 제거하면 2, 3 순서로 나온다.

오답 풀이

  • 1번: 첫 번째 deq로 1이 이미 제거되었다.
  • 2번: 큐의 선입선출 순서를 올바르게 추적한 결과이다.
  • 3번: 제거된 1을 다시 포함했다.
  • 4번: 큐 순서를 후입선출처럼 잘못 계산했다.

보충 개념 원형 큐는 front와 rear를 배열 크기로 나눈 나머지로 갱신한다. deq는 front 위치의 값을 반환한 뒤 front를 증가시킨다.

정보처리기사 실기 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[정보처리기사 실기] C 큐 C언어 기출 #3892 | 문어CBT