2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
function solution(arr1, arr2) {
const newArr = [];
for(let i = 0; i < arr1.length; i++) {
let result = [];
for(let j = 0; j < arr2[0].length; j++) {
let elem = 0;
for(let k = 0; k < arr2.length; k++) {
elem += arr1[i][k] * arr2[k][j];
}
result.push(elem);
}
newArr.push(result);
}
return newArr;
}
기본적인 행렬 원리
result[0, 0] = ( arr1[0, 0] arr2[0, 0] ) + ( arr1[0, 1] arr2[1, 0] ) + ( arr1[0, 2] * arr2[2, 0] )
for
3중문
가장 바깥쪽 반복문의i
는A (= arr1.length)
j
는 result의 열의 개수이며D (=arr2[0].length)
k
는 result의 한 칸의 값을 구하기 위해 실제 반복해야하는 수로B와 C
(arr1[0].length || arr2.length).
k
의 반복문에서 arr1과 arr2의 각 칸을 곱한값을 구하고 이 값을 더해서 임시로 저장할 변수가 필요하다.- 이 변수를
j
가 있는 반복문 시작시에 선언하여 k반복문이 끝날 때마다 이 변수에+=
을 통해 더한 값을 저장해주어야 합니다. 답안에서의elem
변수의 역할
k
의 반복문이 끝나면result
의 칸에 들어갈 값을elem
변수가 가지게 되므로 리턴 할 배열에push
를 해주면 된다
결과값은 2차원 배열이므로 i의 반복문이 끝날때마다 결과값에push