- 연습문제
- 행렬의 곱셈
- Level 2
문제
- 두 개의 이차원 행렬이 주어질 때
- 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
}
'# Algorithm > --- 프로그래머스' 카테고리의 다른 글
[카카오] 튜플 (0) | 2022.03.14 |
---|---|
[프로그래머스] 최솟값 만들기 (0) | 2022.01.26 |
[프로그래머스] 피보나치 수 (0) | 2022.01.26 |
[프로그래머스] JadenCase 문자열 만들기 (0) | 2022.01.26 |
[프로그래머스] N개의 최소공배수 (0) | 2022.01.26 |