[프로그래머스 level2] 행렬의 곱셈

김예지·2021년 10월 19일
1

문제


문제 풀이

나는 문과인이기 때문에, 행렬의 개념부터 막혔다... 행렬의 덧셈 문제는 문제만 이해해도 풀 수 있는 문제였지만, 행렬의 곱셈같은 경우 개념을 모르면 이해조차 할 수 없는 문제였기 때문에 유튜브에서 행렬의 곱셈을 공부했다. 챰나 내가 이과였는지... 이러고 있을줄 알었나💩 어쩌겠냐 내가 선택한 길인데~

사실 인덱스 지정해주는게 너무 어려워서, 답을 참고했다. 이문제를 통해 인덱스 지정하는 방법을 배우자! 복잡한 인덱스라도, 고정할 것과 변경할 것을 잘 생각하면서 풀면 된다. map을 활용해서 한줄로 푼 해설도 있어서 가져왔다. 복습하면서 같이 이해하자!

코드1

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

코드2

function solution(arr1, arr2) {
    return arr1.map((row) => arr2[0].map((x,y) => row.reduce((a,b,c) => a + b * arr2[c][y], 0)))
}

참고 자료

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 27일

10/27
행렬의 곱셈 개념 이해하고, 인덱스 사용하는 것 연습하기

답글 달기