알고리즘
행렬 곱셈
by kcj3054
2022. 6. 11.
문제
풀이
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int arr1[101][101];
int arr2[101][101];
int result[101][101];
int n = 0, m = 0, k = 0;
int func(int a, int b){
// result[a][b]에 해당하는 값을 반환
for (int k = 0; k < m; k++)
result[a][b] += arr1[a][k] * arr2[k][b];
return result[a][b];
}
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cin >> arr1[i][j];
}
cin >> m >> k;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < k; j++)
cin >> arr2[i][j];
}
//n행 k열
for (int i = 0; i < n; i++)
{
for (int j = 0; j < k; j++)
{
result[i][j] = func(i,j);
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < k; j++)
cout << result[i][j] << " ";
cout << '\n';
}
//n k
return 0;
}
- 풀이 -> n * m 행렬 과 m * k행렬 결과는 n * k 그런데 가운데 m에 대한 연산을 해주면된다 func함수를 잘 보자.