다음 C 프로그램의 실행 결과를 쓰시오.
#include <stdio.h>
#define SIZE 3
typedef struct {
int data[SIZE];
int front;
int rear;
} Queue;
void enqueue(Queue *queue, int value) {
queue->data[queue->rear] = value;
queue->rear = (queue->rear + 1) % SIZE;
}
int dequeue(Queue *queue) {
int value = queue->data[queue->front];
queue->front = (queue->front + 1) % SIZE;
return value;
}
int main(void) {
Queue queue = {{0}, 0, 0};
enqueue(&queue, 1);
enqueue(&queue, 2);
dequeue(&queue);
enqueue(&queue, 3);
int first = dequeue(&queue);
int second = dequeue(&queue);
printf("%d 그리고 %d", first, second);
return 0;
}모범답안
2 그리고 3
풀이와 판단 근거
1과 2를 차례로 넣은 뒤 한 번 꺼내면 먼저 들어온 1이 제거된다. 큐에는 2가 남아 있고 그 뒤에 3이 들어간다. 큐는 선입선출 방식이기 때문에 다음 두 번의 dequeue는 2와 3을 차례로 돌려준다. 출력은 2 그리고 3이다.
자주 틀리는 지점
- 연산자 우선순위나 재귀 반환 순서를 생략하고 눈에 보이는 값만 바로 계산함
- 값 전달·참조 전달, 오버라이딩·오버로딩 또는 배열과 포인터의 차이를 혼동함
- 출력의 공백·줄바꿈·대소문자를 무시해 2 그리고 3와 다른 형식으로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.