문제를 풀기위해선 행렬의 곱셈에 대한 이해가 필요하다.
nxm 행렬과 mxp 의 행렬을 곱하면 결과 행렬은 nxp의 형태를 따라야 한다.
따라서 n, m, p를 미리 할당해놓고, 정답 배열을 nxp의 2차원 배열로 초기화 한 후 각각의 자리에 곱한 값을 할당하면 된다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
int n = arr1.size(); // A의 행
int m = arr1[0].size(); // A의 열 (== B의 행)
int p = arr2[0].size(); // B의 열
vector<vector<int>> answer(n, vector<int>(p, 0));
for (int i = 0; i < n; i++) { // A의 행
for (int j = 0; j < p; j++) { // B의 열
for (int k = 0; k < m; k++) { // A의 열 = B의 행
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return answer;
}