반응형
행렬의 덧셈
문제설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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]] |
나의풀이
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
return zip(arr1, arr2)
.map {
zip($0, $1).map { $0 + $1 }
}
}
zip 고차함수를 사용해서 같은 행 열의 요소 끼리 뭉쳐 줍니다
그리고 map.zip.map을 사용하여
새롭게 더한 리턴값을 새로운 행으로 만드는걸 볼 수 있습니다
let arr1 = [[1, 2], [3, 4]]
let arr2 = [[5, 6], [7, 8]]
이렇게 두 배열이 있다면
return zip(arr1, arr2)를 통해서
[((1, 5), (2, 6)), ((3, 7), (4, 8))]
으로 변환한 후
zip을 사용하여 같은 위치 요소를 묶어 주는 이유는
zip([1, 2], [5, 6]) -> [(1, 5), (2, 6)] 각 첫번째 배열의 요소를 묶어줍니다
그리고 짝지어진 요소를 map{$0 + $1}을 통해서 결과값을 통해서
map으로 배열을 만들어 줍니다
for구문도 생각하긴 했었다
하지만 고차함수를 사용을 익히기 위해서 사용해보았습니다 :)
다른 사람 풀이
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
var arr: [[Int]] = []
for n in 0..<arr1.count {
var temp:[Int] = []
for m in 0..<arr1[n].count {
temp.append(arr1[n][m] + arr2[n][m])
}
arr.append(temp)
}
return arr
}
배열 크기만큼 반복문을 통해서 새로운 배열로 통하여 같은 위치를 더해줍니다
그리곤 반환된 값을 새로운 배열에 넣어줍니다
반응형
'Programmers > LV1.' 카테고리의 다른 글
Lv1 | Swift - 예산 (0) | 2024.07.12 |
---|---|
Lv1 | Swift -최대공약수와 최소공배수 (0) | 2024.07.10 |
Lv1 | Swift - 문자열 다루기 기본 (0) | 2024.07.03 |
Lv1 | Swift - 부족한 금액 계산하기 (0) | 2024.07.02 |
Lv1 | Swift - 문자열 내림차순으로 배치하기 (0) | 2024.07.01 |