개발을 시작하는 이야기

[프로그래머스] 행렬의 덧셈 본문

개발 이야기/Algorithm Study

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

Teiresias 2022. 4. 20. 23:12

문제 설명

행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 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]]

Solution.Swift

func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
    var array1 = [Int]()
    var array2 = [[Int]]()
    
    for i in 0..<arr1.count {
        for j in 0..<arr1[i].count {
            let sum = arr1[i][j] + arr2[i][j]
            array1.append(sum)
        }
        array2.append(array1)
        array1.removeAll()
    }
    return array2
}
  1. 배열 array1과 이중 배열 array2를 만들어준다.
  2. 이중 for문을 사용해서 첫 for문은 arr1의 배열의 개수만큼 반복하고
  3. 두 번째 for문은 arr1의 배열 안의 숫자 개수만큼 반복한다.
  4. 각각의 행과 열에 맞게 더해서 array1에 담아준다.
  5. 그리고서 array2에 array1을 담아준다.
  6. array1은 초기화를 시켜준다.

다른 사람 풀이

func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
    return zip(arr1, arr2).map{zip($0,$1).map{$0+$1}}
}

* zip을 사용해서 두 리스트를 찍지어 사용한다.

 

 

[프로그래머스 테스트]