Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 두 행렬의 합 구하기 – 단계별 완전 가이드

행렬 덧셈은 두 행렬에서 같은 위치에 있는 원소끼리 서로 더하는 가장 기본적인 행렬 연산입니다. 이 글에서는 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²)입니다.