행렬의 곱셈 : https://school.programmers.co.kr/learn/courses/30/lessons/12949
행렬의 곱이란 특정 행과 열이 있을때, arr1의 행 값들과 arr2의 열 값들의 곱의 합을 구하는 것입니다.
행렬의 곱이 성사되기 위해서는 arr1의 열의 크기와 arr2의 행의 크기가 동일해야하는 조건이 있습니다.
그리고 행렬의 곱의 결과는 arr1의 행의 크기, arr2의 열의 크기가 행렬의 곱 배열의 행과 열이 됩니다.
이를 기반으로 행렬곱의 결과를 담는 배열의 크기를 [arr1 행의 크기][arr2 열의 크기]로 초기화합니다.
행렬 곱의 배열을 순환하면서 해당 좌표(i,j)에 arr1과 arr2의 공통된 크기 arr1 열의 크기를 기준으로 arr[i][k]*arr[k][j]
의 합으로 갱신해줍니다.
int[][] answer = new int[arr1R][arr2C];
for(int r=0;r<arr1R;r++){
for(int c=0;c<arr2C;c++){
int sum = 0;
for(int k=0;k<arr1C;k++){
sum += arr1[r][k]*arr2[k][c];
}
answer[r][c] = sum;
}
}
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int arr1R = arr1.length;
int arr1C = arr1[0].length;
int arr2R = arr1C;
int arr2C = arr2[0].length;
int[][] answer = new int[arr1R][arr2C];
for(int r=0;r<arr1R;r++){
for(int c=0;c<arr2C;c++){
int sum = 0;
for(int k=0;k<arr1C;k++){
sum += arr1[r][k]*arr2[k][c];
}
answer[r][c] = sum;
}
}
return answer;
}
}