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

less than 1 minute read

문제 설명

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

제한사항

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

풀이

10분
행마다 벡터를 새로 만들어 계산하여 쌓아서 2차원 행렬을 만들었다. 아예 처음부터 행렬의 크기를 정해놓고, 인덱스를 통해 접근하여 계산하는 것이 더 나은 방법인 것 같다.

코드

// 02:50 ~ 02:58
#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;
    vector<int> v;
    int temp;
    for(int i =0; i < arr1.size(); ++i){
        v.clear();
        for(int j =0; j < arr2[0].size(); ++j){
            temp = 0;
            for(int k = 0; k < arr2.size(); ++k){
                temp += arr1[i][k] * arr2[k][j];
            }
            v.push_back(temp);
        }
        answer.push_back(v);
    }
    return answer;
}