arr1 x arr2 = arr3
axn * nxb = axb인 행렬이 생긴다.
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr2[0].length];
for (int i = 0; i < arr1.length; i++) {
for(int j = 0; j < arr2[0].length; j++) {
for (int k = 0; k < arr2.length; k++) {
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return answer;
}
}
arr1 = [[1,2],[7,8]] arr2 =[[3,5],[4,6]]
answer[i][j] = C
arr1[i][k] = [1,2]
arr2[k][j] = [3][4]
i는 answer와 arr1의 행을 가리킨다.
j는 arr2의 열을 가리킨다. [1,2] 가 1열 [3][4], 2열 [4][6]을 곱연산하게 끔한다.
k는 arr1의 열, arr2의 행을 가리킨다.
제일 좋은 방법은 직접 손으로 행렬을 그려보는 것이다.
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr2.length];
for (int i = 0; i < arr1.length; i++) {
for(int j = 0; j < arr2.length; j++) {
for (int k = 0; k < arr2.length; k++) {
answer[i][j] += arr1[i][k] * arr2[k][j];
}
}
}
return answer;
}
}
문제 예시에서 행과 열이 같은 경우만 주어져서 이렇게 생각한 것 같다...
당연히 실패했다.