행렬의 곱셈
두 행렬을 받아 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]
}
}
}
}