코테

[Algorithm] 행렬의 곱셈 - JavaScript

뚜따따 2024. 1. 23. 18:54

 

프로그래머스 - 행렬의 곱셈
난이도 : Level 2
정답률: 63%

 

▶ 문제

 

 

▶ 풀이

풀기 위해선 먼저 행렬의 곱셈법을 알아야 한다. (WikiPidia)

 

행렬 곱셈 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 행렬 곱셈을 위해선 첫째 행렬의 열 갯수와 둘째 행렬의 행 갯수가 동일해야한다. 곱셈의 결과 새롭게 만들어진 행렬은 첫째 행렬의 행 갯수와 둘째 행렬의 열

ko.wikipedia.org

 

 

result[0, 0] = ( arr1[0, 0] * arr2[0, 0] ) + ( arr1[0, 1] * arr2[1, 0] ) + ( arr1[0, 2] * arr2[2, 0] )

 

즉,
arr1 = [[2, 3, 2], [4, 2, 4], [3, 1, 4]]
aar2 = [[5, 4, 3], [2, 4, 1], [3, 1, 1]]
일 때,
result[0, 0] 의 값은 (2 * 5) + (3 * 2) + (2 * 3) = 22 이고
result[0, 1] 의 값은 (2 * 4) + (3 * 4) + (2 * 1) = 22 이다.

 

풀이

function solution(arr1, arr2) {
    const answer = [];
    for(let i = 0; i < arr1.length; i++) {
        let result = [];
        for(let j = 0; j < arr2[0].length; j++) {
            let num = 0;
            for(let k = 0; k < arr2.length; k++) { 
                num += arr1[i][k] * arr2[k][j];
            }
            result.push(num);
        }
        answer.push(result);
    }
    return answer;
}