[알고리즘 문제 풀기] 행렬 곱셈(2740)

C#
lhs's avatar
Jan 15, 2025
[알고리즘 문제 풀기] 행렬 곱셈(2740)
notion image

1. 문제 풀이 아이디어

  • 삼중 반복문을 사용해 행렬 곱셈을 수행하여 문제를 해결할 수 있다.

2. 나의 정답 코드

StreamReader sr = new(Console.OpenStandardInput()); StreamWriter sw = new(Console.OpenStandardOutput()); string[] split = sr.ReadLine().Split(); int an = int.Parse(split[0]); int am = int.Parse(split[1]); int[,] a = new int[an, am]; for (int i = 0; i < an; i++) { split = sr.ReadLine().Split(); for (int j = 0; j < am; j++) { a[i, j] = int.Parse(split[j]); } } split = sr.ReadLine().Split(); int bn = int.Parse(split[0]); int bm = int.Parse(split[1]); int[,] b = new int[bn, bm]; for (int i = 0; i < bn; i++) { split = sr.ReadLine().Split(); for (int j = 0; j < bm; j++) { b[i, j] = int.Parse(split[j]); } } int[,] result = new int[an, bm]; for (int i = 0; i < an; i++) { for (int j = 0; j < bm; j++) { for (int k = 0; k < am; k++) { result[i, j] += a[i, k] * b[k, j]; } sw.Write($"{result[i, j]} "); } sw.WriteLine(); } sr.Close(); sw.Close();

3. 정리

  • 먼저 행렬 A와 B의 크기를 입력받고, 각각의 값을 이차원 배열에 저장한다.
  • 행렬 곱셈을 수행하기 위해 삼중 반복문으로 결과 행렬 C의 각 원소를 계산한다.
    • result[i][j]를 계산할 때, a[i][k] * b[k][j]의 합으로 구한다.
  • 최종적으로 결과 행렬 C의 값을 순서대로 출력한다.
  • StreamReader와 StreamWriter를 사용하면 Console보다 속도가 더 빠르다.
Share article

LHS's Study Space