알고리즘/프로그래머스

프로그래머스 Lv.2) 행렬의 곱셈

Zin0_0 2020. 5. 21. 16:48
반응형

행렬의 곱셈

 

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

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

풀이

행렬의 곱셈에 대해 배열의 곱셈이라고 이해하고 문제이해를 5분정도 못했다... ㅎㅎㅎㅎ

아무튼 행렬의 곱셈을 구글링해서 곱셈법을 다시 배웠다.. ㅠㅠ

 

1. 배열 arr1과 arr2를 통해 답이되는 answer 배열을 만들어 준다.

 1-1. 이때 크기는 arr1의 행, arr2의 열이 된다. (행렬의 연산 특징)

2. 각각 배열의 idx에 대해 행렬 곱셈식을 구해 더해준다.

 

코드

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        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++) {   // 열
                //answer[i][j] = arr1은 행이 i, arr2는 열이 j, 움직이는거는 둘이 공통되는 부분의 길이
                for(int idx =0; idx<arr1[i].length; idx++) {
                    answer[i][j] += arr1[i][idx] * arr2[idx][j];
                }
            }
        }
        
        return answer;
    }
}
반응형