이 프로그램은 사용자로부터 행렬을 입력받아 그 전치 행렬(Transpose Matrix)을 출력합니다. 전치 행렬이란 원래 행렬의 행과 열을 서로 맞바꾼 행렬을 의미합니다. 즉, 기존 행렬의 행은 열이 되고, 열은 행이 됩니다.
알고리즘
시작 행렬의 행(row) 개수와 열(column) 개수를 입력받는다. 행렬의 각 요소를 입력받아 행렬 'A'에 저장한다. 행과 열을 서로 교환하여 전치 행렬을 구한다. 원본 행렬과 전치 행렬을 모두 출력한다. 끝.
예제 코드
#include<iostream>
using namespace std;
int main () {
int A[10][10], a, b, i, j;
cout << "행렬의 행과 열 개수 입력 : ";
cin >> a >> b;
cout << "행렬의 요소 입력 : ";
for (i = 0; i < a; i++)
for (j = 0; j < b; j++)
cin >> A[i][j];
cout << "입력된 행렬 : \n";
for (i = 0; i < a; i++) {
for (j = 0; j < b; j++)
cout << A[i][j] << " ";
cout << "\n";
}
cout << "행렬의 전치 : \n";
for (i = 0; i < b; i++) {
for (j = 0; j < a; j++)
cout << A[j][i] << " ";
cout << "\n";
}
return 0;
}실행 결과
행렬의 행과 열 개수 입력: 3 3 행렬의 요소 입력: 6 7 1 3 2 5 9 12 11 입력된 행렬 : 6 7 1 3 2 5 9 12 11 행렬의 전치 : 6 3 9 7 2 12 1 5 11
코드 설명
위 코드의 핵심 로직은 다음과 같습니다.
- 입력 단계: 이중 for문을 사용해 행렬 A의 각 위치에 값을 저장합니다.
- 원본 출력: A[i][j] 형태로 순서대로 접근하여 행렬을 그대로 출력합니다.
- 전치 출력: 인덱스를 뒤집어 A[j][i] 형태로 접근하면, 행과 열이 서로 바뀐 전치 행렬을 얻을 수 있습니다.
전치 연산은 그래프의 인접 행렬에서 방향을 반대로 뒤집을 때도 활용되며, 선형 대수학 및 그래프 이론에서 매우 자주 사용되는 기본 연산입니다.