행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
최종 코드
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 안의 배열 크기와 같게 해줘야함..
이부분을 몰라서 엄청 헤맸네 하..