더북(TheBook)

행렬의 곱셈 결과는 또 다른 행렬이 됩니다. 이 결과 행렬은 왼쪽 행렬의 행 개수와 오른쪽 행렬의 열 개수를 갖게 되므로 결과 행렬은 다음과 같이 선언할 수 있습니다.

int[][] arr = new int[arr1.length][arr2[0].length];
// 행렬 곱셈
return arr;

반복문을 돌며 각 원소에 알맞은 값을 찾아봅시다.

for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        // arr[i][j]의 값 구하기
    }
}

그림 3-20과 행렬 연산 과정에서 알 수 있듯이, 행렬의 곱셈 결과는 곱해지는 두 행렬의 행과 열을 순회하면서 곱한 값들을 모두 더해주어야 합니다. 다음과 같이 구현할 수 있습니다.

arr[i][j] = 0;
for (int k = 0; k < arr1[i].length; k++) {
    arr[i][j] += arr1[i][k] * arr2[k][j];
}

이렇게 행렬의 곱셈을 구현해보았습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.