D+20 행렬의 곱셈 js

초록귤·2024년 12월 15일
1

100일프로젝트

목록 보기
13/16
post-thumbnail

문제

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

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

코드

오랜만에 수학문제..!
열심히 공부하자
행렬 A row A column
행렬 B row
B column 이 있을 때,
결과행렬은 A row B column 의 사이즈를 가진다.
이 초기값을 가지기 위해서,
A1의 row만큼 B column을 가져야 한다.
또한 Arr[i][j] = 해당 i행의 index들
해당 j열의 index의 합이다.
여기서 k가 c1= arr1의 column개수만큼만 증가할 수 있다는 포인트 기억하자...!!

function solution(arr1, arr2) {
    // 행렬 arr1과 arr2의 행과 열의 수 
    const r1 = arr1.length;
    const c1 = arr1[0].length; 
    
    const r2 = arr2.length;
    const c2 = arr2[0].length;
    
    // 결과 저장할 2차원 배열 초기화
    const ret = [];
    for (let i=0; i<r1; i++){
        ret.push(new Array(c2).fill(0));
    }
    
    // 첫 번째 행렬 arr1의 각 행과 두 번째 행렬 arr2 각 열에 대해
    for(let i=0; i<r1; i++){
        for(let j=0; j<c2; j++){
            // 두 행렬의 데이터를 곱해 결과 배열에 더해줌
            for(let k=0; k<c1; k++){
                ret[i][j] += arr1[i][k] * arr2[k][j];
            }
        }
    }
    return ret
}
profile
초록색 귤이 노랑색으로 익어가듯, 실력이 익어가기 위해 노력하는 개발자 lahee입니다.

0개의 댓글