[Lv.2] 행렬의 곱셈 (JS)

hoheesu·2025년 6월 11일

알고리즘

목록 보기
1/5
post-thumbnail

문제 링크 : 행렬의 곱셈

우선 나는 알고리즘을 공부해본 적도 없는 아주 얕은 개발자기 때문에 이제는 정말 알고리즘 / 자료구조를 공부하고 싶어서 시작하게 됐다.

📘 문제

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

제한사항

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

💡 접근방식

사실 나는 행렬의 곱셈이 뭔지 몰라서 처음에 뇌가 멈추는 줄 알았다.
하지만 다행히도 노트에 계속 적으면서 보다보니 어느정도 규칙이 보였다.

(@nowgnoesiohc이 행렬곱셈에 대해 오지게 명강의도 해줬다)

[3*2] / [2*4] 모양의 배열이 주어진다면

  • arr1의 행 → (3)
  • arr2의 열 → (4)
  • arr1의 열(혹은 arr2의 행) → (2)

행열곱셈이 끝난 후 최종 모양은 [3*4] 여야 한다.

🔎 해결 코드

function solution(arr1, arr2) {
    const answer = []
    for( let i = 0 ; i < arr1.length; i++ ){
        const temp1 = []
        for( let ii = 0; ii < arr2[0].length; ii++){
            let temp2 = 0
            
            for(let iii = 0; iii < arr1[0].length; iii++){
                temp2 += arr1[i][iii] * arr2[iii][ii]
            }
            temp1.push(temp2)
        }
        answer.push(temp1)
    }
    return answer
}

for문 여러개 돌릴때 로마자 사용도 @nowgnoesiohc가 릴스 보내줘서 따라함

profile
🤔👏💡👨🏻‍💻🤯😇

0개의 댓글