Apple is Apple
article thumbnail

문제 설명

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

 

제한 조건

  • 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
  • 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
  • 곱할 수 있는 배열만 주어집니다.

입출력 예

arr1 arr2 return
[[1, 4], [3, 2], [4, 1]] [[3, 3], [3, 3]] [[15, 15], [15, 15], [15, 15]]
[[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]]

코드

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): MutableList<MutableList<Int>> {
        val answer = MutableList<MutableList<Int>>(arr1.size,{MutableList<Int>(arr2[0].size,{i->0})})
        var sum = 0 
        val a1_col = arr1[0].size
        val a2_col = arr2[0].size 
        val a1_row = arr1.size 
        val a2_row = arr2.size
        for (i in 0 until a1_row) {
            for (j in 0 until a2_col) {
                sum = 0;
                for (k in 0 until a1_col) {
                    sum += arr1[i][k] * arr2[k][j];
                }
                answer[i][j] = sum;
            }
        }
        return answer
    }
}

풀이

행렬 곱 계산법을 알면 쉽게 풀 수 있는 문제이다.

두 수를 곱하고 그것을 더해주는 연산이 필요하기 때문에 3중 for문을 이용해 해결할 수 있다. 

결과

안정적으로 통과한 것을 볼 수 있다.

profile

Apple is Apple

@mjjjjjj