문제
다음 JAVA 프로그램이 실행되었을 때, 실행 결과는?
① BCDABCA ② BCDABCC ③ CDDACCC ④ CDDACCA
정답
2번
해설
정답: 2. rs는 배열을 앞에서부터 순서대로 변형한다. 각 i에 대해 a[i]가 'B'이면 'C'로 바꾸고, 마지막 인덱스면 직전 값을, 그 외에는 바로 뒤 값을 가져온다.
- i=0: A→a[1]=B → B
- i=1: B→C
- i=2: D→a[3]=D → D
- i=3: D→a[4]=A → A
- i=4: A→a[5]=B → B
- i=5: B→C
- i=6: 마지막이며 C(≠B)→a[5]=C → C 결과 배열은 B C D A B C C이므로 출력은 BCDABCC이다.
오답 풀이
- 1번: BCDABCA는 마지막 문자가 다르다.
- 2번: BCDABCC가 정답이다.
- 3번: CDDACCC는 변형 규칙과 맞지 않는다.
- 4번: CDDACCA는 변형 규칙과 맞지 않는다.
보충 개념 중첩 if-else는 가장 가까운 if에 결합되며, 배열을 앞에서부터 변형하면 이미 변경된 값이 이후 계산에 반영된다.