프로그래밍의 기초(의사 코드 트레이스)
4행 5열의 2차원 배열 m의 요소를 다음 프로그램으로 요소 수 20인 배열 b로 옮긴다. m[i, j]는 i행 j열의 요소를 나타내며, 인덱스는 1부터 시작한다. m[3, 2]가 대입되는 b의 인덱스는?
integer: k ← 0
for (i from 1 to 4 step 1)
for (j from 1 to 5 step 1)
k ← k + 1
b[k] ← m[i, j]
endfor
endfor
- A7
- B11
- C12
정답과 해설 보기
정답: C. 12
바깥쪽 i가 행, 안쪽 j가 열을 나타내므로, 1행의 5개, 2행의 5개, 3행의 요소 순으로 b에 채워 나갑니다(행 우선 순서). m[3, 2] 앞에는 1행과 2행의 10개와 m[3, 1]이 있으므로 k = 10 + 2 = 12입니다. 일반적으로 (i − 1) × 5 + j로 구할 수 있습니다. 인덱스가 0부터 시작할 때의 식 (i − 1) × 5 + (j − 1)을 그대로 사용하면 하나 어긋난 11이 됩니다.