본문 바로가기
ComputerScience/알고리즘, 프로그래머스

[Lv.2] 행렬의 곱

by VictorMeredith 2023. 2. 15.

1. 문제

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

제한 조건
  • 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
  • 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
  • 곱할 수 있는 배열만 주어집니다.

2. 풀이

function solution(arr1, arr2) {
    var answer = [];
    //arr1 = m*p 의 행렬,
    //arr2 = p*n 의 행렬이라고 가정한다. (p가 동일해야 곱할 수 있다)
    for(i in arr1){ //m = 세로길이 = raw = 행의 개수
        let arr = [];
        for(let k =0; k<arr2[0].length; k++){ // n = 가로길이 = col = 열의 개수
            let a= 0;
            for(let j =0; j<arr2.length; j++){ // p = arr1의 열의 개수 = arr2의 행의 개수
                a += arr1[i][j] * arr2[j][k]
            }
            arr.push(a)
        }
        answer.push(arr);
    }
    return answer;
}

3. 알아야할 사항

 1) 행렬의 곱

행렬의 곱셈

벡터의 내적공식과 관련있다.

댓글