https://www.acmicpc.net/problem/2740
2차원 벡터로 각 행렬을 입력받은 다음 행렬 곱셉의 공식대로 3중 for을 통해 곱셉을 해주면 된다.
정답코드
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> a;
vector<vector<int>> b;
vector < vector<int>> result;
int main()
{
int n, m, k;
cin >> n >> m;
a.resize(n, vector<int>(m));
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> a[i][j];
}
}
cin >> m >> k;
b.resize(m, vector<int>(k));
for (int i = 0; i < m; i++)
{
for (int j = 0; j < k; j++)
{
cin >> b[i][j];
}
}
//행렬곱셈
result.resize(n, vector<int>(k, 0));
for (int i = 0; i < n; i++) {
for (int j = 0; j < k; j++) {
for (int p = 0; p < m; p++) {
result[i][j] += a[i][p] * b[p][j];
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < k; j++) {
cout << result[i][j] << " ";
}
cout << "\n";
}
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][C++]10830번. 행렬 제곱 (0) | 2024.11.15 |
---|---|
[백준][C++]1629번. 곱셈 (0) | 2024.11.14 |
[백준][C++]1780번. 종이의 개수 (0) | 2024.11.12 |
[백준][C++]1992번. 쿼드트리 (0) | 2024.11.11 |
[백준][C++]2630번. 색종이 만들기 (0) | 2024.11.10 |