Coding Test/Programmers

[Java][Programmers] 행렬의 곱셈

예롱메롱 2025. 3. 13. 10:09
728x90
반응형
 

프로그래머스

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

programmers.co.kr


📌 접근 방식

행렬 곱의 정의를 고려하여서 풀었습니다. 행렬 A의 크기가 a × b, 행렬 B의 크기가 b × c일 때, 두 행렬을 곱한 결과 행렬은 a × c의 크기를 가지며, 각 원소는 A의 행과 B의 열을 기준으로 내적(dot product)을 수행해 구합니다.

이를 바탕으로 구현에서는 먼저 결과 행렬의 크기를 arr1.length × arr2[0].length로 초기화하였고, 세 개의 중첩 반복문을 사용하여 행렬 곱을 수행합니다. 가장 바깥 반복문은 결과 행렬의 행 인덱스(i), 두 번째 반복문은 열 인덱스(j), 그리고 가장 안쪽 반복문은 내적 계산을 위한 반복문으로 arr1[i][k] * arr2[k][j]를 누적하여 최종 값을 도출했습니다.


PASS CODE

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = new int[arr1.length][arr2[0].length];
        for(int i=0; i<arr1.length; i++) {
            for(int j=0; j<arr2[0].length; j++) {
                int ans = 0;
                for(int k=0; k<arr1[i].length; k++) {
                    ans += arr1[i][k] * arr2[k][j];
                }
                answer[i][j] = ans;
            }
        }
     
        return answer;
    }
}
728x90
반응형