문제
접근
행렬 곱은 (a x b) x (b x c) 크기의 행렬을 곱했을 때 (a x c) 행렬이 나오며 내부적인 연산은 각 요소마다 b번의 곱을 해야 한다.
3중 for문으로 해결했다.
첫 번째 포문은 a를 의미한다.
두 번째 포문은 c를 의미한다.
세 번째 포문은 b를 의미한다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
def solution(arr1, arr2):
answer = []
for i in range(len(arr1)):
tmp = []
for j in range(len(arr2[0])):
sum = 0
for k in range(len(arr2)):
sum += (arr1[i][k] * arr2[k][j])
tmp.append(sum)
answer.append(tmp)
return answer
- C++ 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#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<arr2.size();k++){
sum += (arr1[i][k] * arr2[k][j]);
}
tmp.push_back(sum);
}
answer.push_back(tmp);
}
return answer;
}