다음 C 함수가 배열의 첫 원소를 보관한 뒤 나머지 원소를 한 칸씩 왼쪽으로 옮겨 `1 4 6 9 8`을 만들도록 ①과 ②에 들어갈 식을 쓰시오. ①은 배열 첨자식으로 작성한다.
#include <stdio.h>
void rotate_left(int values[], int size) {
int saved = values[0];
for (int i = 0; i < size - 1; i++) {
values[i] = ①;
}
values[size - 1] = ②;
}
int main(void) {
int values[] = {8, 1, 4, 6, 9};
rotate_left(values, 5);
for (int i = 0; i < 5; i++) printf("%d ", values[i]);
return 0;
}모범답안
① values[i + 1], ② saved
풀이와 판단 근거
첫 원소 8은 덮어쓰기 전에 saved에 보관된다. i가 0부터 size-2까지 증가하는 동안 현재 위치에는 바로 오른쪽 원소인 `values[i + 1]`을 복사한다.
반복이 끝난 배열은 1, 4, 6, 9, 9이며, 마지막 칸에 saved의 8을 넣어 1, 4, 6, 9, 8이 된다.
자주 틀리는 지점
- values[i - 1]을 대입해 시작부터 범위를 벗어남
- 첫 원소를 보관하지 않고 이동 뒤의 values[0]을 마지막에 대입함
- 마지막 칸을 values[size]로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.