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

nnm·2020년 4월 1일
2

프로그래머스 행렬의 곱셈

문제풀이

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

  • 연산은 앞쪽의 열과 뒤쪽의 행이 같아야 이루어질 수 있다.
  • 연산의 결과 행렬의 크기는 앞쪽의 행 * 뒤쪽의 열 이다.
  • 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개의 답글