다희의 코딩 성장일기

[프로그래머스] level2. 행렬의 곱셈 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level2. 행렬의 곱셈 (자바 JAVA)

ilmiodiario 2021. 8. 24. 14:44

[ 문제 ]  [프로그래머스] level2. 행렬의 곱셈 (자바 JAVA)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12949

 

코딩테스트 연습 - 행렬의 곱셈

[[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]]

programmers.co.kr


# 접근 방법 및 풀이 

 

  • 내 머리가 돌인가 싶었던 문제..문제 보자마자 쉽다고 생각했는데 ^^..
  • 일단 행렬의 곱셈을 정확히 이해해야한다. 처음엔 아무생각 없이 arr1[i][j] * arr2[i][j]라고 생각했는데 당연히 아니구요.
  • 행렬 AxB가 있을때 A (3 X 2) B (2X4) 이면 AB = (3 X 4) 형태의 행렬이 만들어진다.
  • 처음엔 for문 두개로 AB를 할 수 있을 줄 알았는데 범위 idx오류가 나서 for문 3개를 이용해서 풀었다.
  • 자세한건 코드 참조

# 주의할 점 

 

  • 딱히 없음

 

JAVA 코드
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++){
               int copy[] = arr1[i];
                int sum = 0;
                for(int k = 0; k < copy.length; k++){
                    sum += copy[k]*arr2[k][j];
                }
                answer[i][j] = sum;
            }
        }   
        return answer;
    }
}

 

 

 

REVIEW

Comments