다음 C 프로그램이 배열을 오름차순으로 정렬하되 서로 같은 값은 불필요하게 교환하지 않도록 if 조건의 ①에 들어갈 비교 연산자를 쓰시오.
#include <stdio.h>
int main(void) {
int values[] = {42, 17, 31, 8, 25};
int size = sizeof(values) / sizeof(values[0]);
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (values[i] ① values[j]) {
int temp = values[i];
values[i] = values[j];
values[j] = temp;
}
}
}
return 0;
}모범답안
>
풀이와 판단 근거
오름차순에서는 앞 위치 values[i]보다 더 작은 values[j]를 발견하면 두 값을 바꿔야 한다. 이는 `values[i] > values[j]`일 때 성립하므로 빈칸은 `>`다.
안쪽 반복이 끝나면 i 위치에는 남은 구간의 최솟값이 놓인다. `<`를 사용하면 반대로 큰 값이 앞쪽으로 이동해 내림차순이 된다.
자주 틀리는 지점
- 오름차순이라는 이유만으로 `<`를 선택함
- 대입 연산자 `=`를 비교식에 사용함
- 같은 값도 반드시 교환해야 한다고 `>=`만 정답으로 봄
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.