
🧫 문제 분석
✔️ 출처
📖 문제

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;
}
}
문제 예시에서 행과 열이 같은 경우만 주어져서 이렇게 생각한 것 같다.
당연히 실패했다.
❗ 오답노트 / 필요한 지식
- 수학 문제는 항상 개념을 확실하게 이해할 필요가 있다. 그렇지 않으면 시간낭비일 뿐이다.
'programmers > Lv 2' 카테고리의 다른 글
요격 시스템 [자바] (2) | 2024.12.30 |
---|---|
스킬트리 (0) | 2024.06.28 |
n^2 배열 자르기 (0) | 2024.06.27 |
H-Index (0) | 2024.06.27 |
영어 끝말잇기 (0) | 2024.06.27 |