행렬의 곱셈은 (i * j) * (j * k) = (i * k)
이다.
answer
를 (i * k)
크기의 0 을 갖는 리스트로 초기화한다.
i, j, k 를 각각 3중 for문을 돌면서 (arr1, arr2 의 최대 크기는 100이다.)
answer[i][k] += arr1[i][j] * arr2[j][k]
로 업데이트하여 answer
를 반환한다.
def solution(arr1, arr2):
len_i = len(arr1)
len_j = len(arr1[0])
len_k = len(arr2[0])
answer = [[0] * len_k for _ in range(len_i)]
for i in range(len_i):
for j in range(len_j):
for k in range(len_k):
answer[i][k] += arr1[i][j] * arr2[j][k]
return answer
fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
val lenI = arr1.size
val lenJ = arr1[0].size
val lenK = arr2[0].size
var answer = Array(lenI) { IntArray(lenK) }
for(i in 0 until lenI) {
for(j in 0 until lenJ) {
for(k in 0 until lenK) {
answer[i][k] += arr1[i][j] * arr2[j][k]
}
}
}
return answer
}