행렬의 곱셈
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
풀이
행렬 arr1, arr2가 각각 M x N, N x P 일때
행렬곱 answer=M x P
answer[m][p]=arr1[m][0]*arr2[0][p]+arr1[m][1]*arr2[1][p]+...+arr1[m][n]*arr2[n][p]
풀이 코드
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
int m,n,p;
m=arr1.size();
n=arr2.size();
p=arr2[0].size();
vector<vector<int>> answer(m,vector<int>(p,0));
for(int i=0;i<m;i++){
for(int k=0;k<p;k++){
for(int j=0;j<n;j++){
answer[i][k]+=arr1[i][j]*arr2[j][k];
}
}
}
return answer;
}