2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.
오랜만에 수학문제..!
열심히 공부하자
행렬 A row A column
행렬 B row B column 이 있을 때,
결과행렬은 A row B column 의 사이즈를 가진다.
이 초기값을 가지기 위해서,
A1의 row만큼 B column을 가져야 한다.
또한 Arr[i][j] = 해당 i행의 index들 해당 j열의 index의 합이다.
여기서 k가 c1= arr1의 column개수만큼만 증가할 수 있다는 포인트 기억하자...!!
function solution(arr1, arr2) {
// 행렬 arr1과 arr2의 행과 열의 수
const r1 = arr1.length;
const c1 = arr1[0].length;
const r2 = arr2.length;
const c2 = arr2[0].length;
// 결과 저장할 2차원 배열 초기화
const ret = [];
for (let i=0; i<r1; i++){
ret.push(new Array(c2).fill(0));
}
// 첫 번째 행렬 arr1의 각 행과 두 번째 행렬 arr2 각 열에 대해
for(let i=0; i<r1; i++){
for(let j=0; j<c2; j++){
// 두 행렬의 데이터를 곱해 결과 배열에 더해줌
for(let k=0; k<c1; k++){
ret[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return ret
}