코딩테스트

프로그래머스 | 행렬의 덧셈 | Kotlin | 다시풀기++

다시은 2024. 1. 16. 09:49

 

입출력 예를 보면 그냥 같은 인덱스의 값끼리 더해서 나오는게 아니라 배열 안의 배열 안의 요소들이 각각 더해져야 한다. 

배열의 배열 -> 2차원 배열

val numbers = Array(3, {IntArray(4 ,{0})}) // 3행 4열

// [[0, 0, 0, 0],[0, 0, 0, 0], [0, 0, 0, 0]]

 

평소 다른 배열의 같은 인덱스끼리 더하는 for 문으로 했더니 결괏값이 [[4,6],[7,9]]가 아닌 [[1,2,3,4],[2,3,5,6]] 으로 나와버린다. 테스트 케이스 각각의 크기가 다른데 어떻게 더하지?

 

 

2차원 배열 예시 (https://www.youtube.com/watch?v=0Qncbm_f-Zc)

val numbers2dZero = Array(3, {IntArray(4, {0})})

for ( (i, row) in numbers2dZerod.withIndex() ) {
	for ( (j, column) in row.withIndex() ) {
    println("[$i, $j] => $column" // 열
    }
    println()
    }
}
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
[0,0] => 0 [0,1] => 0 [0,2] => 0 [0,3] => 0
[1,0] => 0 [1,2] => 0 [1,2] => 0 [1,3] => 0
[2,0] => 0 [2,1] => 0 [2,2] => 0 [2,3] => 0

 

 

 

 

다른 사람 풀이 1

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

 

indices

: 컬렉션 타입의 인덱스값

 

다른 사람 풀이 2

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
        return Array(arr1.size) {
            row ->
            IntArray(arr1[0].size) {
                col ->
                arr1[row][col] + arr2[row][col]
            }
        }
    }
}

row 와 col 은 각각 0 .. arr1.size -1 와 0 .. arr1[0].size -1 의 범위를 순회한다.

 

 

 


어렵다 어려워 😰

 

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
        return Array(arr1.size) {
            row ->
            IntArray(arr1[0].size) {
                col ->
                arr1[row][col] + arr2[row][col]
            }
        }
    }
}

 

람다함수로 배열의 각 요소를 초기화하고 있다.

row 와 col 은 각각 행과 열의 인덱스이다.

arr1.size 가 2.

Array 의 요소가 어떤 값들이냐 -> row 가 나타냄

IntArray의 요소가 어떤 값들이냐 -> col 이 나타냄

Array 의 0번째 값은 arr1[0][col] + arr2[0][col] 이고

col 은 arr1[0].size 를 순회하고 있다.

arr[0].size 가 2

그러므로 

Array의 0번째 값은 arr1[0][0] + arr2[0][0] , arr1[0][1] + arr2[0][1]

Array의 1번째 값은 arr1[1][0] + arr2[1][0] , arr1[1][1] + arr2[1][1]

 

 

람다람다 헷갈린다.