본문으로 바로가기

[프로그래머스] 행렬의 곱셈

category 알고리즘/프로그래머스 2022. 4. 30. 15:39
728x90

 

문제 설명

 

2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

 

제한 조건

 

  • 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
  • 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
  • 곱할 수 있는 배열만 주어집니다.

입출력 예

 

 

풀이 방법

 

행렬의 곱셈에 대한 문제로 이 문제를 풀기 위해서는 행렬의 값이 구해지는 과정을 살펴봐야 한다.

예를 들어, arr1이 3x4 행렬, arr2가 4x2 행렬이라면 결과값은 arr1의 행인 3, arr2의 열인 2가 합쳐져 3x2 행렬이 된다.

arr[i][j]+=arr[i][k]*arr[k][j]; 라는 특성을 이용하여 풀 수 있다.

 

작성 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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<arr1[0].length;k++){
                    answer[i][j]+=arr1[i][k]*arr2[k][j];
                }
            }
        }
        
        return answer;
    }
}
 
 

 

 

728x90