행렬이 2개 주어집니다. 두 행렬의 곱 결과 행렬을 구하세요
그냥 행렬 푸는 방법대로 반복문을 사용했다.
#include <string>
#include <vector>
using namespace std;
int calc_line(vector<vector<int>> &arr1, vector<vector<int>> &arr2,int a, int b,int m){
int res=0;
for(int i =0;i<m;i++){
res+=arr1[a][i]*arr2[i][b];
}
return res;
}
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
vector<vector<int>> answer;
int n = arr1.size(),m=arr2.size(),r=arr2[0].size();
for(int i = 0;i<n;i++){
answer.push_back(vector<int>());
}
for(int i = 0;i<n;i++){
for(int j = 0;j<r;j++){
answer[i].push_back(calc_line(arr1,arr2,i,j,m));
}
}
return answer;
}
def calc_line(arr1,arr2,i,j,m):
ret =0
for ctr in range(m):
ret+=arr1[i][ctr]*arr2[ctr][j]
return ret
def solution(arr1, arr2):
n = len(arr1)
m = len(arr2)
r = len(arr2[0])
answer = [[] for i in range(n)]
print(answer)
for i in range(n):
for j in range(r):
answer[i].append(calc_line(arr1,arr2,i,j,m))
return answer