행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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]]
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
var array: [[Int]] = []
for i in 0..<arr1.count {
let sum = zip(arr1[i], arr2[i]).map { $0 + $1 }
array.append(sum)
}
return array
}
기본 개념: zip()
함수는 두 시퀀스를 동시에 순회하면서 해당 위치의 요소들을 쌍으로 묶어 새로운 시퀀스를 생성한다. 이렇게 생성된 시퀀스를 통해 두 배열의 값을 동시에 처리할 수 있다.
풀이: 두 개의 2차원 배열을 더하는 작업이 필요했다. 이때 zip(arr1[i], arr2[i])
을 사용해 각 행의 요소들을 쌍으로 묶고, 이를 통해 각 요소들의 합을 쉽게 구할 수 있었다.
작동 방식:
zip(arr1[i], arr2[i])
는 arr1[i]
와 arr2[i]
의 요소들을 순서대로 묶는다.map { $0 + $1 }
을 사용해 각 쌍의 요소들을 더한 값을 새로운 배열로 만든다. 여기서 $0
과 $1
은 각각 zip()
으로 묶인 튜플의 첫 번째와 두 번째 요소를 나타낸다.array
에 추가하여 최종 결과를 반환한다.zip()
을 사용함으로써 두 배열을 동시에 순회하면서 요소별로 작업을 처리하는 과정을 간결하게 표현할 수 있었다.zip()
을 적극 활용하면 좋을 것 같다.