Android/Algorithm

[프로그래머스 / Kotlin] 행렬의 덧셈

정생강 2024. 3. 14. 14:18

[프로그래머스 / Kotlin] 행렬의 덧셈

 

문제 설명

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

- 제한 조건

행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다

 

해결 과정

각 행과 열의 값을 더하는 로직은 금방 생각해냈는데 ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 에러를 해결하지 못해서 꽤 헤맸다. 처음엔 반복문에 arr1.size를 사용하여 풀었는데 범위가 벗어났다는 에러를 보고 반복문의 범위에 문제가 있는 줄 알고 거기에 메달렸다. 그래서 유효한 범위만 반복하도록 indices를 사용했지만 또 똑같은 에러를 마주했고 다른 곳에 문제가 있다고 생각했다.

결론적으로 문제는 answer을 초기화하는 것에 있었다. 일반 배열이라 생각해 따로 크기나 값을 지정하지 않았는데 이는 2차원 배열이라 해당 답이 들어갈 사이즈를 정해야 했던 것 같다. 해서 answer을 arr1과 동일한 사이즈의 배열로 생성하였고 에러가 해결되었다.

 

내가 푼 코드

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
        var answer = Array<IntArray>(arr1.size){IntArray(arr1[0].size)}
        for(i in arr1.indices){
            for(j in arr1[i].indices){
                answer[i][j] = arr1[i][j] + arr2[i][j]
            }
        }
        return answer
    }
}

 

후기

indices라는 메소드를 알게되었다. 배열, 리스트의 유효한 범위를 가져온다.

2차원 배열을 다루는데 익숙하지 않은 것 같다. 좀 더 알아볼 필요가 있다.