18. 행렬의 곱셈 ( Level 2 )

JavaScript logo

행렬의 곱셈 ( Level 2 )

문제

행렬의 곱셈은, 곱하려는 두 행렬의 어떤 행과 열을 기준으로,
좌측의 행렬은 해당되는 행, 우측의 행렬은 해당되는 열을 순서대로 곱한 값을 더한 값이 들어갑니다.
행렬을 곱하기 위해선 좌측 행렬의 열의 개수와 우측 행렬의 행의 개수가 같아야 합니다.
곱할 수 있는 두 행렬 A,B가 주어질 때, 행렬을 곱한 값을 출력하는 productMatrix 함수를 완성해 보세요.

나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
const productMatrix = (A,B) => {
const result = Array(A.length);
for (let i = 0; i < A.length; i++ ) {
result[i] = Array(B[0].length);
for (let j = 0; j < B[0].length; j++ ) {
result[i][j] = 0;
for (let k = 0; k < A[0].length; k++ ) {
result[i][j] += A[i][k] * B[k][j];
}
}
}
return result;
}

다른 사람의 풀이

1
2
3
const productMatrix = (A, B) => A.map(a => B.map((b, j) =>
a.reduce((ap, ac, k) => ap + ac * B[k][j], 0
)));

마무리

개인적으로 공부한 내용을 정리한 것이기 때문에 반말을 사용한 점 양해 부탁드립니다.
잘못된 부분이나 피드백이 있으시다면, 댓글에 남겨주시면 감사하겠습니다!

공유하기