이전 고등학교 때, 배운 행렬과정을 코드에 녹아내려했다.
1. 우선 결과 행렬의 크기는 첫번째 행렬에 행, 두번째 행렬에 열이 그 크기가 된다.
2. 그리고 각 요소마다 곱 계산은 첫번째 행렬에 열이나 두번째 행렬에 행이 된다.
-> 만약 두개가 다르다면 곱이 안됨 -> 문제 오류
3. 계산 진행시, 첫번째 행렬에서 행에 해당하는 수와 두번째 행렬에서 열에 해당하는 수를 곱하여 이를 다 더해준다.
4. 이렇게 만들어준 하나의 행을 결과 행렬에 push 해준다.
function solution(arr1, arr2) {
var answer = [];
var row = arr1.length;
var col = arr2[0].length;
var middle = arr2.length;
for(var r = 0;r<row;r++){
var plusArr = [];
for(var c = 0 ; c<col;c++){
var plusNum =0;
// 결과 배열 값 각각 구하는 구간
for(var i = 0;i<middle;i++){
plusNum += (arr1[r][i] * arr2[i][c]);
}
plusArr.push(plusNum);
}
answer.push(plusArr);
}
return answer;
}
이 문제는 쉬운 풀이보다는 이전에 배웠던 계산을 녹여서 문제를 풀었다. 행렬 곱에 대한 개념만 알고 있고 이를 설계한다면 쉬운 문제였다.