문제 설명
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
1차 고민
자릿수에 맞게 빈 배열을 여러 개 만들고 각 배열에 a + b를 append하는 방법... 될 것 같다.
1차 코드
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
var arr3: [[Int]] = []
for i in 0..<arr1.count {
arr3.append([])
for j in 0..<arr1[i].count {
arr3[i].append(arr1[i][j] + arr2[i][j])
}
}
return arr3
}
1차 결과
다른 사람의 코드
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
var i = 0, j = 0
return arr1.map { (numbers) -> [Int] in
defer {
i += 1
j = 0
}
return numbers.map { (number) -> Int in
defer {
j += 1
}
return number + arr2[i][j]
}
}
}
map을 이렇게 사용할 수도 있구나 싶다. defer는 자신의 실행을 맨 마지막으로 미룰 때 사용한다는 사실도 몰랐는데 알게 되었다.
for문 작성없이도 훨씬 단순해진 것 같아서 앞으로 이런 방법으로 코드를 작성하는 능력을 길러봐야 할 듯...
'iOS > Programmers' 카테고리의 다른 글
[Swift] lv.1 직사각형 별찍기 | Programmers (0) | 2024.03.20 |
---|---|
[Swift] lv.2 최댓값과 최솟값 | Programmers (0) | 2024.03.19 |
[Swift] lv.1 문자열 다루기 기본 | Programmers (2) | 2024.03.15 |
[Swift] lv.1 부족한 금액 계산하기 | Programmers (3) | 2024.03.14 |
[Swift] 문자열 내림차순으로 배치하기 | Programmers (0) | 2024.03.13 |