# Algorithm/--- 프로그래머스

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

jiniz.ll 2022. 1. 26. 00:32

문제

  • 두 개의 이차원 행렬이 주어질 때
  • arr1 에 arr2 를 곱한 결과 반환하기
  •  
  • 행과 열의 길이는 2 이상 100 이하
  • 각각의 원소는 -10 이상 20 이하 자연수
  • 곱할 수 있는 배열만 주어짐

Idea

  • arr1 의 행과 arr2 의 열을 각각 곱한 합이 새로운 원소가 됨
  • arr1 의 행 개수만큼 바깥 반복문을 돌고
  • arr2 의 열 개수만큼 안쪽 반복문을 돌고
  • arr1 의 열 개수 또는 arr2의 행 개수만큼 그 안쪽 반복문을 돌면서 arr1 의 행과 arr2 의 열을 곱해줌
  •  
  • arr1 의 행과 arr2 의 열의 원소를 각각 곱하여 합한 값이 새로운 행렬의 한 행의 하나의 원소가 됨
  • arr1 의 하나의 행에 대해서 arr2 의 모든 열을 위 작업을 하게 되면 새로운 행렬의 한 행이 됨
  • 위 작업을 arr1 의 모든 행에 대해 하면 새로운 행렬이 완성됨

Code

Swift

import Foundation

func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {

    var answer: [[Int]] = []

    for r in 0..<arr1.count {
        var row: [Int] = []
        for c in 0..<arr2[0].count {
            var sum = 0
            for i in 0..<arr2.count {
                sum += arr1[r][i] * arr2[i][c]
            }
            row.append(sum)
        }
        answer.append(row)
    }

    return answer
}