본문 바로가기
Problem/Programmers

[Programmers] 12949번 행렬의 곱셈

by NeNemEee 2023. 4. 10.
728x90

문제설명

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

제한사항

행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.

문제풀이

행렬의 곱셈을 구현하면 된다.

소스코드

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    int row = arr1.size();
    int column = arr2[0].size();

    //m x n 과 n x p 행렬을 곱하면 m x p 행렬이 나오므로 미리 행렬의 크기 할당
    answer.resize(row);
    for(int i=0; i<row; i++){
        answer[i].resize(column);
    }

    //행렬의 곱셈규칙에 따라 계산
    for(int i=0; i<row; i++){
        for(int j=0; j<column; j++){
            int sum = 0;
            int psize = arr1[0].size();
            for(int p=0; p<psize; p++){
                sum+=arr1[i][p]*arr2[p][j];
            }

            answer[i][j] = sum;
        }
    }


    return answer;
}
728x90

댓글