[TIL][프로그래머스/Swift] 행렬의 덧셈

Eden·2024년 11월 13일
2

TIL

목록 보기
40/92
post-thumbnail

문제 설명

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

제한 조건

  • 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

입출력 예

arr1arr2return
[[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() 메서드 사용 방법

  • 기본 개념: zip() 함수는 두 시퀀스를 동시에 순회하면서 해당 위치의 요소들을 쌍으로 묶어 새로운 시퀀스를 생성한다. 이렇게 생성된 시퀀스를 통해 두 배열의 값을 동시에 처리할 수 있다.

  • 풀이: 두 개의 2차원 배열을 더하는 작업이 필요했다. 이때 zip(arr1[i], arr2[i])을 사용해 각 행의 요소들을 쌍으로 묶고, 이를 통해 각 요소들의 합을 쉽게 구할 수 있었다.

  • 작동 방식:

    • zip(arr1[i], arr2[i])arr1[i]arr2[i]의 요소들을 순서대로 묶는다.
    • 그 후 map { $0 + $1 }을 사용해 각 쌍의 요소들을 더한 값을 새로운 배열로 만든다. 여기서 $0$1은 각각 zip()으로 묶인 튜플의 첫 번째와 두 번째 요소를 나타낸다.
    • 마지막으로, 계산된 배열을 array에 추가하여 최종 결과를 반환한다.

느낀 점

  • zip()을 사용함으로써 두 배열을 동시에 순회하면서 요소별로 작업을 처리하는 과정을 간결하게 표현할 수 있었다.
  • 기존에 이중 for문을 사용해 처리하던 방식보다 훨씬 직관적이며 코드의 길이도 줄일 수 있었다.
  • 앞으로도 배열 간의 연산이 필요할 때 zip()을 적극 활용하면 좋을 것 같다.
profile
Frontend🌐 and iOS

0개의 댓글