모두CBT

다음은 행렬 연산을 하는 C 코드와 transpose함수 호출 후 행렬… | [7급 국가직 자료구조론] 21년 1회차 기출문제 상세 페이지

1[7급 국가직 자료구조론] 21년 1회차
다음은 행렬 연산을 하는 C 코드와 transpose함수 호출 후 행렬의 상태이다. ㉠에 들어갈 코드로 옳은 것은?
#include <stdio.h>
#define R 3
#define C 3
void transpose(int A[R][C], int B[R][C]) {
for(int r = 0; r < R; r++)
for(int c = 0; c < C; c++)
( ㉠ )
}
int main(int argc, char* argv[]) {
int array1[R][C] = {{1,2,3},{4,5,6},{7,8,9}};
int array2[R][C] = {0};
transpose(array1, array2);
return 0;
}
transpose함수 호출 후 행렬의 상태:
1 2 3 1 4 7
array1: 4 5 6 array2: 2 5 8
7 8 9 3 6 9
1
A[c][r] = B[c][r];
2
B[c][r] = A[c][r];
3
A[c][r] = B[r][c];
4
B[c][r] = A[r][c];
해설

㉠에는 B[c][r] = A[r][c];가 들어간다. 전치 행렬은 원래 행렬의 행과 열을 맞바꾼 것이므로 A의 (r, c) 원소를 B의 (c, r) 위치에 옮긴다.

예를 들어 A[0][1]=2가 B[1][0]에 들어가 array2의 둘째 행 첫 값이 2가 된다.

  • A[c][r] = B[c][r];는 원본 A를 0으로 채워진 B로 덮어쓸 뿐 B는 그대로 0이다.
  • B[c][r] = A[c][r];는 같은 위치끼리 복사하므로 전치가 아니라 단순 복사가 된다.
  • A[c][r] = B[r][c];는 결과를 A에 쓰므로 array2가 바뀌지 않는다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 자료구조론] 21년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 자료구조론 기출문제 암기장 전체 보기