행렬의 곱셈을 어떻게 하는건지 몰라서

그거부터 알아왔다

이렇게 내가 구하고자 하는 칸이 있으면 배열1의 행 * 배열2의 행을 더하는 넉낌으로다가

하면 되는 듯!

배열 1 [i][k] *  배열2 [k][j]

이러면 변수가 3개가 필요하고, 3중 for문을 써야한다

#include <iostream>
#include <vector>
using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    int c = arr1.size(), r = arr1[0].size(), n = arr2[0].size();

    vector<vector<int>> answer(c, vector<int>(n,0));
    for(int i = 0 ; i < c; ++i){
        for(int j = 0; j < n; ++j){
            for(int k =0; k < r; k++){
                answer[i][j] += arr1[i][k]*arr2[k][j];
            }
        }
    }
    return answer;
}

 

 

** 주의할 점은

arr1이 c x r 행렬일 때, arr2는 r x n 행렬이어야 행렬 곱이 가능하고,

행렬 곱 결과는 c x n 크기가 되어야 함

요런 넉낌으로다가

 

+ Recent posts