알고리즘/미분류

[PGS/프로그래머스][Lv1] 행렬의 덧셈(Kotlin)

꼬물쥰 2022. 5. 12. 00:52

[문제 설명]

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

 

[제한 조건]

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

 

[입출력 예]

arr1 arr2 return
[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4],[6]]

 

[풀이]

두 행렬의 각 원소에 접근하여 더해주는 문제

처음에 생각한 건 이중반복문으로 answer에 각 행렬 원소 더한 걸 추가해주려고 했다.

그런데 answer이 배열이다보니 추가하는 함수가 없었다. 그래서 어떻게 할까 고민하다가 

생성하면서 값을 바로 넣어버리는 게 좋을 것 같았다. 

answer = Array(4){i ->i * i}  //[0, 1, 4, 9]

이 예제를 참고하였다.

 

- 오늘 배운 점

반환 값이 배열인 경우 값을 추가하기 위해서는 초기화를 해주어야 한다...!

나는 항상 이부분이 헷갈렸다. 내가 생각한 알고리즘은 맞는 것 같은데

데이터를 추가하는 부분에서 항상 에러가 발생했다...

오늘 배열 초기화 하는 방법을 익히기 위해 비슷한 유형 문제 2개를 풀어봤다.

비록 쉬운 문제였지만 오늘 내가 배운 점은 코테에서 정말 필요하다고 생각한다..

항상 추가할때마다 에러가 발생해서 추가하는 방법 찾는데에 시간을 많이 소비했다...

앞으로는 그런 시간 낭비를 줄일 수 있었으면 좋겠다.

            

[코드]

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

        return answer
    }
}