TIL #51

loci·2024년 6월 20일
0

TIL

목록 보기
49/111


행렬의 곱셈

두 행렬을 받아 arr1에 arr2를 곱한 결과를 반환해야 한다.

선형대수학을 이용해 해당 식처럼 계산해주도록 풀어야한다.

C[i][j] = A[i][1]B[1][j] + A[i][2]B[2][j] + ... + A[i][n]*B[n][j]


나의풀이

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
        var answer = Array(arr1.size){IntArray(arr2[0].size)}
        for(i in 0 until arr1.size){
            for(j in 0 until arr2[0].size){
                for(k in 0 until arr1[0].size){
                    answer[i][j] += arr1[i][k] * arr2[k][j]
                }
            }
        }
        return answer
    }
}

다른사람의 풀이

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> =Array<IntArray>(arr1.size) {
            eachRow ->
            IntArray(arr2[0].size) {
                eachColumn ->
                var secondArrayRow = 0
                arr1[eachRow].fold(0) {
                    acc, i ->
                    acc + i * arr2[secondArrayRow++][eachColumn]
                }
            }
        }
}
profile
편리한 개발자

0개의 댓글