알고리즘 CODEKATA 37 (행렬의 덧셈)

오리너구리·2024년 6월 13일
0

CODEKATA

목록 보기
36/57
post-thumbnail

문제 설명

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


제한 조건

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

내 풀이

최종 코드

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

        return answer
        
    }
}

내 풀이

class Solution {
    fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>):Array<IntArray> {
        var answer = arrayOf<IntArray>()
        
        
        var newArray = arr1.zip(arr2).map{it.first + it.second}.toIntArray()
        
        answer = newArray
        

        return answer
        
    }
}

zip 이라는걸 전에 다른 사람이 사용한걸 봤어서 나도 사용해보려고했는데

이렇게 하는거아닌가봄. ㅜ

이것저것 시도해봤는데.. 내가 문제를 이해못했는지 다 틀려서

처음으로 구글링으로 다른사람 푼거 검색해서 보고 풀었다.

개짱남

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

        return answer
        
    }
}

일단 이중 배열?에 대해서 어떻게 다뤄야할지 너무 어려워서 헤맨거같은데

arr1 이 [[1,2],[2,3]]

arr2 가[[3,4],[5,6]]

이렇게 배열안에 배열이 또 있기 때문에

for문으로 배열을 새로 만들 때에도 for문을 이중으로 사용해 줘야했음

첫번째 for문으로 arr의 요소 개수만큼 반복해주고, array 라는 변수에 arr1의 첫번째 배열의 사이즈와 같은 배열을 만들거라고 선언해주고.

두번째 for문으로는 arr1의 첫번째 배열의 요소 만큼 반복하면서 array 의 [j] 인덱스에 arr1의 [i] 번째 배열의 [j] 번째 요소와 arr2의 [i]번째 배열의 [j]번째 요소를 더해서 넣어줬다.

그리고 answer의 [i] 번째 배열을 array로 넣어주면서 반복문을 마치는 식의 코드임

이렇게 하기위해서 처음 answer를 정의해줄때 배열의 크기를 arr1과 같게 해주고, 배열 안 배열의 크기도 arr1 안의 배열 크기와 같게 해줘야함..

이부분을 몰라서 엄청 헤맸네 하..

profile
오리너구리입니다

0개의 댓글