💡Problem Solving/Programmers

[프로그래머스] 행렬의 곱셈 (Java)

gom20 2021. 10. 20. 23:30

#문제

https://programmers.co.kr/learn/courses/30/lessons/12949

 

코딩테스트 연습 - 행렬의 곱셈

[[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]]

programmers.co.kr


#풀이

행렬의 곱셈을 프로그램으로 구현한다. 

A행렬의 i행과 B행렬의 j행의 모든 성분의 곱을 합한 것이 결과 행렬의(i, j)의 성분이 된다. 

A행렬의 크기가 m*n, B행렬의 크기가 n*p일 경우 결과 행렬의 크기는 m*p가 된다.

https://en.wikipedia.org/wiki/File:Matrix_multiplication_diagram_2.svg

 

File:Matrix multiplication diagram 2.svg - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Summary Licensing Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version publishe

en.wikipedia.org

 

#소스코드

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        // m*n n*k 행렬의 곱셈 결과는 m*k 행렬이다. 
        // 결과의 배열 생성
        int[][] answer = new int[arr1.length][arr2[0].length];

        for(int i = 0; i < answer.length; i++){ 
            for(int j = 0; j < answer[i].length; j++){
                for(int k = 0; k < arr1[0].length; k++){
                    answer[i][j] += arr1[i][k]*arr2[k][j];
                }
            }
        }
        
        return answer;
    }
}