행렬의 곱셈을 통해 2(행) X 3(열), 3 X 5 => 2 X 5의 행렬이 만들어짐 (첫번째 행렬의 열과 두번째 행렬의 행은 크기가 같아야 함)
이 행렬에서 (1,2)값을 구하고 싶다면? (0부터 시작하는 인덱스)
[1][0]*[0][2] + [1][1]*[1][2] + [1][2]*[2][2]
arr1
의 행이 i
개, 열이 k
개, arr2
의 행이 k
개, 열이 j
개 일 때 행렬의 곱셈 결과는 i
의 행과 j
의 열이 만들어진다. 그렇게 answer
의 사이즈를 미리 정해둔다.arr1[i][k]*arr2[k][k]
값을 모두 더해주면 answer[i][j]
의 값이 나온다#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
vector<vector<int>> answer(arr1.size(), vector<int>(arr2[0].size()));
for(int i=0;i<answer.size();i++) // 행
{
for(int j=0;j<answer[i].size();j++) // 열
{
int tmp = 0;
for(int k=0;k<arr2.size();k++)
{
tmp += arr1[i][k] * arr2[k][j];
}
answer[i][j] = tmp;
}
}
return answer;
}