프로그래머스 - 행렬의 곱셈

황인규·2022년 10월 21일
0

알고리즘

목록 보기
1/3

문제 링크

[문제 설명]
두 행렬의 곱한 결과를 반환하라.

[풀이 방법]
우선 정답이 될 행렬의 크기는 a*b행렬과 b*c행렬을 곱하면 a*c행렬이 되므로 arr1의 행의 크기가 정답 행렬의 행의 크기이고, arr2의 열의 크기가 정답 행렬의 열의 크기가 된다.

행렬의 곱셈을 진행하기 이전에 문제를 분리해서 생각하는 게 좋다.
1. 먼저 한 행과 한 열을 구하는 방법을 먼저 생각한다.
2. 두번째 행과 첫번째 열을 생각한다.
3. 첫번째 행과 두번째 열을 생각한다.
4. 두번째 행과 두번째 열을 생각한다.

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
        var answer = Array(arr1.size) { IntArray(arr2[0].size)}

        for (colOfArr2 in arr2[0].indices) {
            for (rowOfArr1 in arr1.indices) {
                for (colOfArr1 in arr1[0].indices) {
                    answer[rowOfArr1][colOfArr2] += arr1[rowOfArr1][colOfArr1] * arr2[colOfArr1][colOfArr2]
                }
            }
        }

        return answer
    }
}

0개의 댓글