행렬의 곱셈 level 2 자바

meluu_·2024년 5월 18일
0

프로그래머스

목록 보기
29/30
post-thumbnail

🧫 문제 분석

✔️ 출처

행렬의 곱셈 level 2

📖 문제

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;
    }
}

문제 예시에서 행과 열이 같은 경우만 주어져서 이렇게 생각한 것 같다...
당연히 실패했다.


❗ 오답노트 / 필요한 지식

  1. 수학 문제는 항상 개념을 확실하게 이해할 필요가 있다. 그렇지 않으면 시간낭비일 뿐이다.
profile
열심히 살자

0개의 댓글

관련 채용 정보