
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