선형대수를 한번이라도 배웠다면 모를 수 없는 행렬의 곱
index와 여러 loop을 다루는 연습문제로 해볼만하다.
행렬의 곱연산 방식을 모르는 사람은 다음 링크를 확인하자.
동영상으로 친절하게 알려준다.
총 3번의 for loop 을 사용했고 핵심 포인트는 다음과 같다.
(1) answer 행렬의 최종 형태 == arr1의 행수 * arr2의 열수
(2) for loop의 순서
💡 먼저 수행되야할 loop을 가장 안쪽에, 나중에 수행되야 할 loop을 바깥쪽에 배치하는 것이 요령이다.
글로 표현하기 어려우므로 그림으로 표현해보자.
class MatrixMultiply {
fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
// 정답이 될 행렬은 모든원소 0으로 초기화
val answer = Array<IntArray>(arr1.size){IntArray(arr2.first().size){0} }
// 3번 loop
for (row in arr1.indices) {
// 2번 loop
for (col2 in arr2.first().indices) {
// 1번 loop
for (col in arr1[row].indices) {
answer[row][col2] += arr1[row][col] * arr2[col][col2]
}
}
}
return answer
}
}