반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스(Lv.2) - 행렬의 곱셈 문제를 풀었습니다.
목차
Github
문제 링크
풀이
이번 문제는 행렬의 곱을 출력하는 문제입니다.
해결에 정말 오랜 시간이 걸렸던 문제입니다.
한 가지 수학적 개념을 놓쳐서 많이 헤맸는데요.
바로 (m x k) 행렬 A와 (k x n) 행렬 B의 곱은 (m x n)이라는 것, 즉 열의 개수는 B가 기준이라는 것입니다.
(출처 : https://mathbang.net/562)
따라서 두 번째 for문의 반복 횟수는 arr1[0]의 원소 개수가 아닌 arr2[0]의 원소 개수여야 합니다.
arr1[0]으로 하면 테스트는 통과하는데 막상 제출하면 0점으로 나올 것입니다.
혹시 해결을 못하신 분이 계시다면 꼭 다시 확인해 보세요.
전체 코드
import Foundation
func solution(_ arr1:[[Int]], _ arr2:[[Int]]) -> [[Int]] {
var result: [[Int]] = []
for index1 in 0..<arr1.count {
var mul: [Int] = []
for index2 in 0..<arr2[0].count {
var sum: Int = 0
for index3 in 0..<arr2.count {
sum += (arr1[index1][index3] * arr2[index3][index2])
}
mul.append(sum)
}
result.append(mul)
}
return result
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형