코딩 테스트/프로그래머스(LV2)

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

dev-hpk 2024. 11. 12. 00:02
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

1. 문제

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

 

제한사항

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

입출력 예

arr1 arr2 return
[[1, 4], [3, 2], [4, 1]] [[3, 3], [3, 3]] [[15, 15], [15, 15], [15, 15]]
[[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]]

 

2. 정답 풀이

풀이 전략

    행렬곱 계산 방법대로 로직 작성 
 

행렬곱

Matrix Multiplication 행렬 의 곱셈은 여타 행렬의 연산과 같이 '크기가 맞는' 경우에만 정의되는데

namu.wiki

  • m x r, r x n 행렬을 곱하면 m x n 행렬 리턴

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

 

 

 
반복문을 3번이나 쓰니까 너무 헷갈린다. 더 직관적이고 간단한 방법은 없나...🙄🙄
 

 

 

[프로그래머스] 할인 행사 (LV2 - JavaScript)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 문제XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여합

dev-hpk.tistory.com

 

 

[프로그래머스] n^2 배열 자르기 (LV2 - JavaScript)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 문제정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을

dev-hpk.tistory.com