Lv2. 행렬의 곱셈

Hello·2022년 8월 15일
0

코딩테스트 연습 > 행렬의 곱셈

1. 풀이 설명

  1. 행렬의 곱셈은 (i * j) * (j * k) = (i * k) 이다.

  2. answer(i * k) 크기의 0 을 갖는 리스트로 초기화한다.

  3. i, j, k 를 각각 3중 for문을 돌면서 (arr1, arr2 의 최대 크기는 100이다.)
    answer[i][k] += arr1[i][j] * arr2[j][k] 로 업데이트하여 answer 를 반환한다.

2. 나의 풀이

python

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

kotlin

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
}
profile
안녕하세요 :)

0개의 댓글