행렬의 곱셈 | 프로그래머스

Bluewave·2024년 8월 5일

코테공부_java

목록 보기
44/99
post-thumbnail

문제

🩶 문제 바로가기

문제레벨정답률
행렬의 곱셈Lv.265%

My Code

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int width = arr2[0].length;
        int height = arr1.length;
        int commonLength = arr1[0].length;       

        int[][] result = new int[height][width];

        for(int i = 0; i<height; i++){
            for(int j = 0; j<width; j++){
                for (int k = 0; k < commonLength; k++) {
                    result[i][j] += arr1[i][k] * arr2[k][j];
                }
            }
        }
        
        return result;
    }
}
  1. 행렬 곱셈의 결과물인 result 배열의 높이는 arr2의 가로 길이, 너비는 arr1의 세로 길이와 같기 때문에 각각 height와 width 라는 변수로 할당
    ㄴ 아래 그림 참고!

  2. 우선 두 번의 for문을 돌면서 result 배열에 값을 채워준다.

  3. 이때 들어가는 값은 arr1과 arr2 배열의 값을 곱해서 합해줘야하기 때문에 commenLength라는 width 값을 가지는 변수를 추가 선언했다.
    ㄴ 처음에는 두 가지 for문으로 돌렸는데, 이렇게 하면 result에 값이 더해지지 않고 넘어간다.
    ㄴ 따라서 추가 for문을 사용하여 result에 사용되는 변수와 충돌 방지!


출처: 이미지링크


사실 학창시절에 행렬을 배우지 않은 세대라,, 행렬이 나올때마다 개념을 찾아봐야했기에 정확한 동작원리를 알지는 못한다.
그러나 기본적인 행렬 곱셈의 방식을 그대로 코드로 구현하는 것은 생각보다는 쉬웠다..!

그냥 머릿속의 계산식을 코드로 적기만 하면 풀리는 문제라 행렬이라는 개념 자체 때문에 레벨2가 아닌가..라는 짐작s

profile
Developer's Logbook

0개의 댓글