프로그래밍의 기초(의사 코드 트레이스)

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
  1. A7
  2. B11
  3. 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이 됩니다.

이 분야 연습하기 분야로 돌아가기

프로그래밍의 기초(의사 코드 트레이스)의 다른 문제

  1. 배열의 인덱스는 1부터 시작하며, +는 문자열을 연결한다. 다음 프로그램을 실행한 후의 r의 값은?
  2. 다음 함수 isPal은 문자열형 배열 s의 문자 순서가 앞에서 읽어도 뒤에서 읽어도 같으면(회문) true를 반환한다. 배열의 인덱스는 1부터 시작한다. 프로그램 중의 【a】에 들어갈 것은?
  3. ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 f를 f(9087)로 호출했을 때의 반환값은?
  4. ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 toBin을 toBin(12)로 호출했을 때의 반환값은?
  5. 두 정수 a, b를 뺄셈으로 같게 만들어 가는 다음 프로그램을 실행한 후의 k의 값은?