DM Log

[연습문제] 행렬의 곱셈 - Python / JavaScript 본문

알고리즘/프로그래머스

[연습문제] 행렬의 곱셈 - Python / JavaScript

Dev. Dong 2025. 3. 22. 13:29

문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/12949

 

프로그래머스

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

programmers.co.kr

 

[문제 간단 요약]

1. 2개의 배열이 주워졌을때 배열의 곱을 구하는 문제

 

 [문제 해결 방안]

1. 배열의 곱셈 방법을 통해 배열의 곱을 구함 (예시 3*2 행렬과 2*4 행렬의 곱)

a₀₀×b₀₀ + a₀₁×b₁₀ a₀₀×b₀₁ + a₀₁×b₁₁ a₀₀×b₀₂ + a₀₁×b₁₂ a₀₀×b₀₃ + a₀₁×b₁₃
a₁₀×b₀₀ + a₁₁×b₁₀ a₁₀×b₀₁ + a₁₁×b₁₁ a₁₀×b₀₂ + a₁₁×b₁₂ a₁₀×b₀₃ + a₁₁×b₁₃
a₂₀×b₀₀ + a₂₁×b₁₀ a₂₀×b₀₁ + a₂₁×b₁₁ a₂₀×b₀₂ + a₂₁×b₁₂ a₂₀×b₀₃ + a₂₁×b₁₃

 

[문제 해결 코드 - python]

def solution(arr1, arr2):
    answer = []
    # 정답 배열 만들기
    for i in range(len(arr1)):
        answer.append([0]*len(arr2[0]))
    
    # 행 곱셈
    for i in range(len(arr1)):
        for j in range(len(arr2[0])):
            for k in range(len(arr1[0])):
                answer[i][j] += arr1[i][k] * arr2[k][j]
    
    return answer

 

[문제 해결 코드 - javascript]

function solution(arr1, arr2) {
    var answer = Array.from({length: 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;
}