Kotlin/Algorithm Problems

<프로그래머스> 행렬의 곱셈(Lv.2)

re트 2023. 11. 17. 16:44
728x90

[깃허브]

https://github.com/heesoo-park/ForCodeKata/tree/main/%ED%96%89%EB%A0%AC%EC%9D%98%20%EA%B3%B1%EC%85%88

[프로그래머스]

https://school.programmers.co.kr/learn/courses/30/lessons/12949?language=kotlin

 

이 문제는 그냥 너무 짧고 목적이 명확했다.

그리고 시간이 생각보다 걸렸다...?!

요즘에는 문제 푸는 시간이 좀 걸린다 싶으면 펜과 종이를 들고 막 적어본다.

테스트 케이스나 내가 생각하는 흐름 등을 적다보면 좀 정리가 되기 때문이다.

 

이 문제의 경우에는 3중 for문을 사용했기 때문에 이 범위가 저 범위인지가 헷갈려서 시간을 더 쓰게 됐다.

그래도 차근차근 적고 디버깅하면서 해결완료!

 

해당 방법으로 작성한 코드는 다음과 같다.

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
        var answer = arrayOf<IntArray>()

        for (i in 0 until arr1.size) {
            var line = IntArray(arr2[0].size) {0}
            for (j in 0 until arr2[0].size) {
                for (c in arr2.indices) {
                    line[j] += arr1[i][c] * arr2[c][j]
                }
            }

            answer += line
        }

        return answer
    }
}

(Kotlin의 2차원 배열은 봐도봐도 안 익숙해진다...)

(반복문 iterator 이름 짓기 힘들다...)

반응형