(Java)프로그래머스 - 행렬의 곱셈

윤준혁·2024년 4월 8일

나의 풀이

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

과정

참조 : https://mathbang.net/562#gsc.tab=0
행렬의 곱셈은 arr1의 가로와 arr2의 세로를 곱한 값을 더해주면 된다

다른 사람 풀이

class ProductMatrix {
    public int[][] productMatrix(int[][] A, int[][] B) {
        int[][] answer = new int[A.length][B[0].length];

    for(int i=0; i<answer.length; i++){
        for(int j=0; j<answer[0].length; j++){
        for(int k=0; k<A[0].length; k++){
            answer[i][j] += A[i][k] * B[k][j];          
        }
      } 
    }
        return answer;
    }

    public static void main(String[] args) {
        ProductMatrix c = new ProductMatrix();
        int[][] a = { { 1, 2 }, { 2, 3 } };
        int[][] b = { { 3, 4 }, { 5, 6 } };
      // 아래는 테스트로 출력해 보기 위한 코드입니다.
      System.out.println("행렬의 곱셈 : " + c.productMatrix(a, b));
    }
}

0개의 댓글