[JavaScript] 프로그래머스 - 행렬의 곱셈 (2단계)

배똥회장·2022년 8월 1일
0

📝 문제

프로그래머스 > 코딩테스트 연습 > 연습문제 > 행렬의 곱셈


📝 답안

📌 작성 코드

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

✔ 정확성 테스트

테스트 1 〉 통과 (4.39ms, 33MB)
테스트 2 〉 통과 (7.77ms, 34MB)
테스트 3 〉 통과 (14.96ms, 34.8MB)
테스트 4 〉 통과 (4.17ms, 33.1MB)
테스트 5 〉 통과 (13.76ms, 34.3MB)
테스트 6 〉 통과 (7.67ms, 34.4MB)
테스트 7 〉 통과 (1.13ms, 30.5MB)
테스트 8 〉 통과 (0.89ms, 30.6MB)
테스트 9 〉 통과 (0.40ms, 30.7MB)
테스트 10 〉 통과 (7.12ms, 34MB)
테스트 11 〉 통과 (4.42ms, 33MB)
테스트 12 〉 통과 (0.59ms, 30.5MB)
테스트 13 〉 통과 (5.47ms, 34.4MB)
테스트 14 〉 통과 (8.95ms, 34.1MB)
테스트 15 〉 통과 (6.31ms, 33.4MB)
테스트 16 〉 통과 (4.14ms, 33.6MB)


📌 코드 풀이

예제 테스트 케이스 2번으로 예시를 들면 3 * 3 배열과 3 * 3 배열의 곱셈은 아래와 같다

수학적 행렬의 곱셈은 (x * m) * (n * y) = (m * n)의 배열이 나오지만, 코딩에서 2차원 배열을 통한 행렬의 곱셈은 (m * x) * (y * n)으로 표현이 된다.
이 점을 주의하면서 문제를 풀면 된다.


코드에는 총 3개의 for문이 나온다.

① for (let k = 0; k < arr1.length; k++) {
② for (let i = 0; i < arr2[0].length; i++) {
③ for (let j = 0; j < arr2.length; j++) {

각 for문이 어떤 반복을 하는지를 파악하면서 작성하면 수월하게 접근할 수 있을 것이다.

profile
어쩌면 개발자

0개의 댓글