반응형
https://school.programmers.co.kr/learn/courses/30/lessons/12949
내 코드
func solution(_ arr1: [[Int]], _ arr2: [[Int]]) -> [[Int]] {
var result: [[Int]] = Array(repeating: Array(repeating: 0, count: arr2[0].count), count: arr1.count)
for i in 0..<arr1.count {
for j in 0..<arr2[0].count {
for k in 0..<arr1[0].count {
result[i][j] += arr1[i][k] * arr2[k][j]
}
}
}
return result
}
Review
먼저 arr1 과 arr2를 곱하면 나올 수 있는 크기의 배열을 초기화 해줍니다.
예를들어 3x2 * 2x2 행렬을 곱하면 3x2 행렬이 나옵니다.
var result: [[Int]] = Array(repeating: Array(repeating: 0, count: arr2[0].count), count: arr1.count)
이후 3중 for문을 통해 행렬의 곱셈을 진행합니다.
arr1.count 는 row 즉, arr1의 행의 수를 나타냅니다.
arr2[0].count 는 col 즉, arr2의 열의 수를 나타냅니다.
arr1[0].count 는 col 즉, arr1의 열의 수를 나타냅니다.
따라서 아래 그림 처럼 하나씩 연산을 진행해 준다면
아래와 같은 코드로 정리할 수 있습니다.
for i in 0..<arr1.count {
for j in 0..<arr2[0].count {
for k in 0..<arr1[0].count {
result[i][j] += arr1[i][k] * arr2[k][j]
}
}
}
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 네트워크 Swift (0) | 2024.11.10 |
---|---|
[프로그래머스] 귤 고르기 Swift (3) | 2024.10.28 |
[프로그래머스] H-Index Swift (0) | 2024.08.15 |
[프로그래머스] 베스트앨범 Swift (0) | 2024.08.12 |
[프로그래머스] 프로세스 Swift (0) | 2024.06.30 |