Algorithm/프로그래머스

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

nowkoes 2023. 6. 18. 16:06

문제 설명


제한 사항 및 입출력 예제


개념

 행렬의 곱셈을 구현하는 비교적 간단한 알고리즘이다. 행렬의 곱셈을 수행하려면 몇 가지 기본적인 규칙과 조건이 필요하다. 예를 들어, n1 * m1 행렬A, n2 * m2 행렬B가 존재할 때 두 행렬의 곱셈이 이루어지기 위해선 

 

  • 차원 일치: m1 = n2
  • 결과 행렬의 크기: 행렬A * 행렬B = 행렬C일 때, 행렬 C의 크기는 n1 * m2
  • 곱셈 규칙: C[i][j] = A[i][k] * B[k][j]

 

와 같은 조건들이 필요하다. 

 


풀이

#include <vector>
using namespace std;

vector<vector<int>> solution(vector<vector<int>> ary1, vector<vector<int>> ary2) 
{
    vector<vector<int>> answer(ary1.size());
    int sum = 0;

    for (int i = 0; i < ary1.size(); ++i)
    {
        for (int j = 0; j < ary2[0].size(); ++j)
        {
            sum = 0;
            for (int k = 0; k < ary1[0].size(); ++k)
               sum += (ary1[i][k] * ary2[k][j]);

            answer[i].push_back(sum);
        }
    }

    return answer;
}
반응형