프로그래머스 - 행렬의 곱셈 (c++)
IT/알고리즘

프로그래머스 - 행렬의 곱셈 (c++)

반응형

문제 설명

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

 

제한 조건

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

입출력 예

풀이

#include <vector>
#define PB push_back

using namespace std;
typedef vector<vector<int>> vvi;


int cul(int x, int y, vvi arr1, vvi arr2){
    int sum = 0;
    
    for(int i=0; i<arr2.size(); i++){
        sum += arr1[x][i] * arr2[i][y];
    }
    
    return sum;
}

vector<vector<int>> solution(vvi arr1, vvi arr2) {
    vvi answer(arr1.size());
   
    for(int i=0; i<arr1.size(); i++){
        for(int j=0; j<arr2[0].size(); j++){
            answer[i].PB( cul(i, j, arr1, arr2) );
        }
    }
    
    return answer;
}
반응형