Algorithm/Programmers(c++)

[c++][프로그래머스] 행렬의 곱셈

kim-hasa 2021. 9. 1. 12:09

https://programmers.co.kr/learn/courses/30/lessons/12949

 

코딩테스트 연습 - 행렬의 곱셈

[[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]]

programmers.co.kr

두 행렬을 곱셈하는 문제이다.

 

정답이 될 행렬의 가로, 세로의 길이로 초기화한 후, 곱한값을 더해서 넣으면 완료 !

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
                             
    int len1 = arr1.size();     // 행렬의 세로 길이
    int len2 = arr2[0].size();  // 행렬의 가로 길이
    int len3 = arr1[0].size();  // 곱할 갯수
    
    vector<vector<int>> answer(len1, vector<int>(len2));    // 벡터 초기화

    for(int i = 0; i< len1; i++)
    {
        for(int j=0; j<len2; j++)
        {
            int sum = 0;
            for(int k=0; k<len3; k++)
            {
                sum += arr1[i][k] * arr2[k][j];     // 곱해서 더함
            }
            answer[i][j] = sum;     // 넣어줌
        }
    }
    
    return answer;
}