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

nnm·2020년 4월 1일

프로그래머스 행렬의 곱셈

문제풀이

단순히 행렬의 계산을 하려고 하면 어렵지 않다. 그런데 코드로 옮기려고 하면? 생각보다 쉽게 구현되지 않았다. 그래서 다시 행렬 연산을 공부하고 하나씩 옮겨봤다.

  • 연산은 앞쪽의 열과 뒤쪽의 행이 같아야 이루어질 수 있다.
  • 연산의 결과 행렬의 크기는 앞쪽의 행 * 뒤쪽의 열 이다.
  • answer[i][j] += arr1[i][k] * arr2[k][j] 이다.
    • 이 때 k는 앞쪽의 열이자 뒤쪽의 행

구현코드

  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;
      }
  }
profile
그냥 개발자

2개의 댓글

comment-user-thumbnail
2021년 3월 25일

첫 줄의 public 뒤의 int[][]의 역할은 뭔가요?
타입 선언인가요?

1개의 답글