본문 바로가기

알고리즘

[코딩테스트] Level. 1 행렬의 덧셈 Kotlin

728x90

문제 설명

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

제한 조건
  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
입출력 예
[[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]]
[[1],[2]] [[3],[4]] [[4],[6]]

 

 

이번문제는 2차 for문을 이용해서 문제를 풀어야겠다 라는 생각까진 했지만 뜻대로 되지않아 못풀었다.

arr1.forEachIndexed { index, value ->
    arr2.forEachIndexed { index2, value2 ->
    }
}

 

다른분의 풀이. Array() 를 사용하여 문제를 풀으셨다.


return Array<IntArray>(arr1.size){ i ->
    IntArray(arr1[0].size){ j -> arr1[i][j] + arr2[i][j] }
}

 

이번에 배운 것 중 하나는 arrayOf() 와 Array() 의 차이이다. 

arrayOf() 는 선언과 동시에 원소값을 지정할 수 있지만 Array()는 선언과 동시에 원소값을 지정할 수 없다. 

Array()는 또한 람다식을 사용하여 원소값을 넣어 줄 수 있다는 특징이 있다.

 

//선언과 동시에 원소값을 지정할 수 있다.
val arrayOf = arrayOf("1", "2", "3", 1, 2, 3)
val arrayOf2 = arrayOf<String>("1", "2", "3")
val arrayOf3 = arrayOfNulls<String>(3) // 사이즈만큼 null 배열 선언 , 자료형 타입이나 사이즈가 빠지면 안됨 .

//Array 는 기본적으로 자료형과 사이즈를 선언해 줘야됨.
val array = Array<String>(3) { "ex" }
val array2 = Array<String>(3) { i -> "ex$i" }  // 람다식으로 사용이 가능함
val array3 = emptyArray<String>() //사이즈가 0인 비어있는 배열 선언

 

이것을 이용하여 다른 분들이 문제를 푼 것 같다. 

 

 

이번 문제를 풀면서 contentToString() 을 알았는데 array의 원소값들을 보기 좋은 메소드인 것 같다/ 

array.contentToString()