자바스크립트(JavaScript)
function solution(arr1, arr2) {
let answer = [];
for(let i = 0; i < arr1.length; i++) {
answer.push([]);
for(let j = 0; j < arr2[0].length; j++) {
let sum = 0;
for(let n = 0; n < arr2.length; n++) {
sum += (arr1[i][n] * arr2[n][j]);
}
answer[i].push(sum);
}
}
return answer;
}
// j의 한계를 잘못 지정해서 진짜 1시간이 넘게 걸렸다.. j야😥
0.
행렬의 곱셉을 우선 알아야 한다.
arr1이 mn인행렬 arr2가 nk인 행렬이라고 가정하였을 때
arr1의 열의 수와 arr2의 행의 수가 같아야 곱할 수 있다.
문제에서는 곱셈이 가능한 경우만 주어진다고 되어있다.
1.
arr1의 행과 arr2의 열을 곱해준다.
i 는 arr1의 행이 될것이다.
j 는 arr2의 열이 될것이고
n 은 arr1의 열 임과 동시에 arr2의 행이 된다.
arr1의 각 행을 arr2의 모든 열에 곱 해주어 answer의 행으로 만들어 줄 것이다.
2.
💥index값으로 표현할 것이기 때문에 1행이아닌 0행 시작하는걸로 표현할 것이다.
arr1[i][n] * arr2[n][j]의 값을 sum에 더해준다.
이 때 for(i)안에 for(j)가 있고 for(n)이 제일 안쪽이기 때문에 n부터 정해놓은 한계까지 증가한다.
그렇게 되면 sum 은 answer의 i행 j열의 값이 되고 그것을 answer[i]에 집어 넣어준다
이 과정을 j의 한계점까지 반복하였으면 answer[i]의 값이 완성 되었을 것이고
3.
그 이후 i 값을 증가시켜주면서 2번 과정을 반복한다.