[프로그래머스|JAVA] 행렬의 곱셈 | 그림 풀이 ⭕️

2025. 6. 4. 18:03💻코딩/💡Programmers

728x90
반응형

[문제 링크]

 

프로그래머스

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

programmers.co.kr

 


 

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        //answer = arr1의 행크기 * arr2 행의 열크기
        int[][] answer = new int[arr1.length][arr2[0].length];
        
        int row1, row2, col2;
            
        for(row1 = 0; row1 < arr1.length; row1++){
            for(col2 = 0; col2 < arr2[0].length; col2++){
                int sum = 0;
                
                for(row2 = 0; row2 < arr2.length; row2++){
                    sum += arr1[row1][row2] * arr2[row2][col2];
                }
                answer[row1][col2] = sum;
            }
        }
        return answer;
    }
}

[접근법]

  1. 행렬의 곱을 생각하여 answer 배열 크기를 정한다.
  2. arr2 행의 열 크기인 col2 값만큼 반복하며
  3. arr1 행 길이 = arr2 열 길이임을 이용하여 sum 행렬의 곱을 구하고 sum에 값을 더한다.
  4. answer 배열에 sum 값을 추가하여 반환한다.

 


 

 ⬇️ 행렬의 곱을 쉽게 이해하기 위해 그림으로 표현해보았다. ⬇️

 

테스트 케이스 2번

 

⬆️ 위 그림을 통해

첫 번째 행렬(arr1)의 열 수  = 두 번째 행렬(arr2)의 행의 수이고,
최종적으로 나오는 행렬은 arr1 행의 수 x arr2 열의 수가 되는 것을 알 수 있다.

 

 

이를 또 이해하기 쉽게, 보기 쉽게 직접 그려보면 아래와 같다.

즉, 고정되는 값을 col2로 지정하고 행렬의 곱을 진행했다. 

 

 

728x90
반응형