행렬의 곱셈

Falcon·2021년 2월 20일
1

programmers

목록 보기
15/27

🔒 문제

🧠 생각의 흐름

선형대수를 한번이라도 배웠다면 모를 수 없는 행렬의 곱
index와 여러 loop을 다루는 연습문제로 해볼만하다.
행렬의 곱연산 방식을 모르는 사람은 다음 링크를 확인하자.
동영상으로 친절하게 알려준다.

🎞️ Matrix Multiplication

총 3번의 for loop 을 사용했고 핵심 포인트는 다음과 같다.

(1) answer 행렬의 최종 형태 == arr1의 행수 * arr2의 열수
(2) for loop의 순서
💡 먼저 수행되야할 loop을 가장 안쪽에, 나중에 수행되야 할 loop을 바깥쪽에 배치하는 것이 요령이다.

글로 표현하기 어려우므로 그림으로 표현해보자.

행렬의 곱셈 loop 순서

🔑 풀이 (Kotlin)

class MatrixMultiply {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
    // 정답이 될 행렬은 모든원소 0으로 초기화
        val answer = Array<IntArray>(arr1.size){IntArray(arr2.first().size){0} }

// 3번 loop
        for (row in arr1.indices) {
        // 2번 loop
            for (col2 in arr2.first().indices) {
            // 1번 loop
                for (col in arr1[row].indices) {
                    answer[row][col2] += arr1[row][col] * arr2[col][col2]
                }
            }
        }
        return answer
    }

}
profile
I'm still hungry

0개의 댓글