문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
코드 작성
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
int n = arr1.size();
int m = arr1[0].size();
int k = arr2[0].size();
vector<vector<int>> result(n, vector<int>(k, 0));
for (int i = 0; i < n; i++) {
for (int j = 0; j < k; j++) {
for (int l = 0; l < m; l++) {
result[i][j] += arr1[i][l] * arr2[l][j];
}
}
}
return result;
}
해설
- (y1, x1) * (y2, x2) 행렬의 곱셈에서 결과 행렬의 크기는 (y1, x2)이다.
- 이를 토대로 배열을 생성하고 0으로 초기화한다.
- 행렬의 곱셈으로 결과 행렬의 각 요소에 값을 저장한다.
'Algorithm > Practice' 카테고리의 다른 글
| [Algorithm] n^2 배열 자르기 (0) | 2025.01.31 |
|---|---|
| [Algorithm] 멀리 뛰기 (1) | 2025.01.27 |
| [Algorithm] N개의 최소공배수 (0) | 2025.01.24 |
| [Algorithm] 예상 대진표 (0) | 2025.01.23 |
| [Algorithm] 카펫 (1) | 2025.01.23 |