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

삼식이·2025년 6월 30일

알고리즘

목록 보기
67/84

행렬의 곱셈

문제를 풀기위해선 행렬의 곱셈에 대한 이해가 필요하다.
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;
}

0개의 댓글