문제
다음 C 코드의 실행 결과로 알맞은 것은?
C#include <stdio.h> int main() { char a[9] = "ABACADBC"; for (int i = 1; i < 8; i++) { if (a[i] == 'B') { a[i] = 'D'; } else { char t = a[i]; a[i] = a[i - 1]; a[i - 1] = t; } } printf("%s", a); return 0; }
① ADBAACDC ② AABACDDC ③ ABAAADCC ④ AACADDCD
정답
4번
해설
정답: 4. 반복문에서 B는 D로 바꾸고, 그 외의 문자는 이전 문자와 자리를 교환하는 과정을 차례대로 적용하면 최종 문자열은 AACADDCD가 된다.
오답 풀이
- 1번: 중간 단계의 자리 교환을 잘못 추적한 결과이다.
- 2번: B 치환과 자리 교환의 일부가 누락된 결과이다.
- 3번: 일부 위치에서의 교환이 잘못 적용된 결과이다.
- 4번: 반복문을 차례대로 적용한 최종 결과와 일치한다.
보충 개념 문자 배열을 변형하는 문제는 매 반복마다 배열 상태를 표로 정리하면서 추적하면 실수를 줄일 수 있다.