728x90
행렬의 곱셈
문제 설명
행렬의 곱셈을 구현해보자.
$$
\begin{bmatrix}
a & b\\ c & d\\ \end{bmatrix}
\times
\begin{bmatrix}
e & f\\ g & h\\ \end{bmatrix}
=
\begin{bmatrix}
a\times e + b\times g & a\times f + b\times h
\\
c\times e + d\times g & c\times f + d\times h
\end{bmatrix}
$$
문제 풀이
소스코드 : C++
#include<iostream>
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
vector<vector<int>> answer;
for (int i = 0; i < arr1.size(); i++) {
vector<int> tmp;
for (int j = 0; j < arr2[0].size(); j++) {
int sum = 0;
for (int k = 0; k < arr1[0].size(); k++) {
sum += arr1[i][k] * arr2[k][j];
}
tmp.push_back(sum);
}
answer.push_back(tmp);
}
return answer;
}
소스코드 : Python
파이썬의 경우 zip
함수와 배열의 행과 열에 접근할 수 있는 _row
, _col
이 있으므로 좀 더 간단하게 표현 가능하다.
def solution(arr1, arr2):
return [[sum(a*b for a, b in zip(arr1_row,arr2_col)) for arr2_col in zip(*arr2)] for arr1_row in arr1]
728x90
300x250