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

creativeBin·2022년 12월 27일
0

행렬의 덧셈

문제 설명

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

제한 조건

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

입출력 예

arr1arr2return
[[1,2],[2,3]][[3,4],[5,6]][[4,6],[7,9]]
[[1],[2]][[3],[4]][[4],[6]]

풀이

class Solution {

    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {

    val result = arr1.mapIndexed{ index, arr ->
            arr.mapIndexed{ index2, obj ->
                obj + arr2[index][index2]
            }.toIntArray()
        }.toTypedArray()

    return result

    }
}

이해

필자는 자바스크립트를 먼저 접했기에 Type 지정하는 Array에서 헤메었다.

let arr = [] 이와같이 타입을 지정하지 않기때문에...


mapIndexed 함수를 사용 해야했으며,

두개의 mapIndexed 함수를 활용하여 각각 더해준다음 반환시킨다


생각보다 너무 힘들게 푼 문제여서 다시 한번 풀이를 해보았다.

차근차근 console로 확인해보고 디버깅해보니 문제 해결 완료!!! 😊

/**
 * You can edit, run, and share this code. 
 * play.kotlinlang.org 
 */

fun main() {        
        
    val array1 = 
        arrayOf(
            arrayOf(1,2),
            arrayOf(2,3),        	
        )
        
    val array2 = 
        arrayOf(
            arrayOf(3,4),
            arrayOf(5,6),        	
        )
    
    var result = array1.mapIndexed { index, arr ->
        arr.mapIndexed { index2, value -> 
            value + array2[index][index2]            
        }.toIntArray()        
    }.toTypedArray()
    
    
    result.mapIndexed { i, it ->
        println(it[0])
        println(it[1])
    }
      
    
}
4
6
7
9
profile
언제나 항상 즐겁게 New vibes 😎

0개의 댓글