본문 바로가기

프로그래머스/구현

[행렬] 프로그래머스 '행렬의 곱셈' - js

반응형

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12949#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

2. 설명

이 문제는 행렬 곱의 개념을 이해해야 한다.

행렬 곱의 개념을 까먹어서 아래 링크를 통해 복습했다.

https://mathbang.net/562#gsc.tab=0

 

행렬의 곱셈, 행렬의 거듭제곱

행렬의 곱셈은 행렬의 실수배에 비하면 훨씬 어려워요. 행렬을 곱할 수 있는 조건이 있어 이 조건을 만족하지 않으면 곱셈을 하지 못하는 경우도 있어요. 게다가 계산방식도 매우 까다롭죠. 도

mathbang.net

행렬 곱의 개념과 숫자의 규칙만 파악하면 쉽게 풀 수 있는 문제!

i = 초록, j = 파랑, k = 빨강

temp[0] = arr1[0,0] * arr2[0,0] + arr[0,1] * arr[1,0]

temp[1] = arr1[0,0] * arr2[0,1] + arr[0,1] * arr[1,1]

function solution(arr1, arr2) {
    let answer = [];
    // 행렬 곱의 한 행
    let temp = new Array(arr2[0].length).fill(0);
    
    // 행렬 곱의 행
    for(let i=0;i<arr1.length;i++){
        temp = new Array(arr2[0].length).fill(0);
        // 행렬 곱의 열
        for(let j=0;j<arr2[0].length;j++){
            for(let k=0;k<arr2.length;k++){
                temp[j] += arr1[i][k] * arr2[k][j];
            }
        }
        answer.push(temp);
    }
    
    return answer;
}
반응형