728x90
문제설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한사항
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.
문제풀이
행렬의 곱셈을 구현하면 된다.
소스코드
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
vector<vector<int>> answer;
int row = arr1.size();
int column = arr2[0].size();
//m x n 과 n x p 행렬을 곱하면 m x p 행렬이 나오므로 미리 행렬의 크기 할당
answer.resize(row);
for(int i=0; i<row; i++){
answer[i].resize(column);
}
//행렬의 곱셈규칙에 따라 계산
for(int i=0; i<row; i++){
for(int j=0; j<column; j++){
int sum = 0;
int psize = arr1[0].size();
for(int p=0; p<psize; p++){
sum+=arr1[i][p]*arr2[p][j];
}
answer[i][j] = sum;
}
}
return answer;
}
728x90
'Problem > Programmers' 카테고리의 다른 글
[Programmers] 12953번 N개의 최소공배수 (1) | 2023.04.10 |
---|---|
[Programmers] 17680번 캐시 (0) | 2023.04.10 |
[Programmers] 120811번 중앙값 구하기 (0) | 2023.02.08 |
[Programmers] 120810번 나머지 구하기 (0) | 2023.02.07 |
[Programmers] 120809번 배열 두배 만들기 (0) | 2023.02.07 |
댓글