행렬 덧셈은 두 행렬에서 같은 위치에 있는 원소끼리 서로 더하는 가장 기본적인 행렬 연산입니다. 이 글에서는 C#을 사용하여 두 개의 3x3 정방행렬(9개의 원소를 가진 행렬)을 입력받고, 두 행렬의 합을 계산한 뒤 결과를 출력하는 프로그램을 단계별로 살펴보겠습니다.
1단계: 세 개의 2차원 배열 선언
먼저 세 개의 2차원 배열을 선언합니다. 앞의 두 배열(arr1, arr2)은 사용자가 입력할 행렬을 저장하고, 세 번째 배열(arr3)은 두 행렬을 더한 결과를 담게 됩니다.
int[] arr1 = new int[20, 20]; int[] arr2 = new int[20, 20]; int[] arr3 = new int[20, 20];
2단계: 행렬 크기 설정 및 요소 입력 받기
사용자로부터 두 행렬의 값을 차례대로 입력받습니다. 여기서는 3x3 크기의 정방행렬, 즉 총 9개의 원소를 다루기 위해 행과 열의 크기를 n=3으로 설정합니다. 중첩된 for 루프를 사용하면 행과 열을 순회하면서 값을 손쉽게 입력받을 수 있습니다.
3단계: 행렬 덧셈 수행
두 행렬의 합은 아래처럼 중첩 반복문을 통해 각 위치의 원소끼리 더하여 세 번째 배열에 저장하면 됩니다.
for(i=0;i<n;i++) for(j=0;j<n;j++) arr3[i,j]=arr1[i,j]+arr2[i,j];
전체 코드 예제
다음은 C#에서 두 행렬을 더하는 과정 전체를 담은 완성된 코드입니다. 첫 번째 행렬과 두 번째 행렬의 원소를 입력받고, 입력된 행렬을 출력한 후, 덧셈 결과를 화면에 표시합니다.
using System;
public class Exercise19 {
public static void Main() {
int i, j, n;
int[] arr1 = new int[20, 20];
int[] arr2 = new int[20, 20];
int[] arr3 = new int[20, 20];
// 행렬의 행과 열 크기 설정
n = 3;
Console.Write("Enter elements in the first matrix:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
arr1[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
Console.Write("Enter elements in the second matrix:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
arr2[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
Console.Write("\nFirst matrix is:\n");
for (i = 0; i < n; i++) {
Console.Write("\n");
for (j = 0; j < n; j++)
Console.Write("{0}\t", arr1[i, j]);
}
Console.Write("\nSecond matrix is:\n");
for (i = 0; i < n; i++) {
Console.Write("\n");
for (j = 0; j < n; j++)
Console.Write("{0}\t", arr2[i, j]);
}
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
arr3[i, j] = arr1[i, j] + arr2[i, j];
Console.Write("\nAdding two matrices: \n");
for (i = 0; i < n; i++) {
Console.Write("\n");
for (j = 0; j < n; j++)
Console.Write("{0}\t", arr3[i, j]);
}
Console.Write("\n\n");
}
}실행 결과
아래는 프로그램 실행 예시입니다. 입력값이 주어지지 않은 환경에서 실행되었기 때문에 모든 원소가 0으로 표시됩니다. 실제로 숫자를 입력하면 입력한 값에 맞는 행렬과 덧셈 결과가 출력됩니다.
Enter elements in the first matrix: Enter elements in the second matrix: First matrix is: 000 000 000 Second matrix is: 000 000 000 Adding two matrices: 000 000 000
참고 사항
행렬 덧셈이 성립하려면 두 행렬의 행과 열의 개수가 반드시 동일해야 합니다. 위 예제처럼 3x3 행렬뿐만 아니라 n의 값만 변경하면 4x4, 5x5 등 원하는 크기의 정방행렬에도 그대로 적용할 수 있습니다. 또한 이 알고리즘은 모든 원소를 한 번씩 순회하므로 시간 복잡도는 O(n²)입니다.