다음 C 프로그램의 출력 결과는?
#include <stdio.h>
void rotate(int *a, int n, int k) {
k %= n;
while (k--) {
int first = a[0];
int i;
for (i = 0; i < n - 1; i++) {
a[i] = a[i + 1];
}
a[n - 1] = first;
}
}
int main(void) {
int arr[] = {1, 2, 3, 4, 5};
rotate(arr, 5, 7);
int i;
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}정답 2번
k %= n에서 회전 횟수는 7%5=2가 된다. while의 한 회마다 첫 원소를 보관한 뒤 나머지 원소를 한 칸씩 앞으로 옮기고 보관한 원소를 맨 뒤에 넣는다. 첫 회 뒤 배열은 [2,3,4,5,1], 두 번째 회 뒤에는 [3,4,5,1,2]이다. 오른쪽 회전이 아니며 실제 반복도 7회가 아니라 2회이므로 출력은 3 4 5 1 2이다.
콘텐츠 정보
- 자료 유형
- 공개 기출
- 검수 상태
- 내용 검수 완료
- 해설 작성·검수
- 정처LAB 편집 기준
- 최종 검수
- 2026-08-09