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

Jaewoong2·2021년 2월 11일
0

알고리즘공부

목록 보기
27/35

문제


접근법

  • 행렬의 곱셈이란,

    앞부분의 행렬의 열과 뒷부분 행렬의 행의 갯수가 같을 때, 앞부분 행렬의 행과 뒷부분의 행렬의 열을 각각 행, 열로 갖는 새로운 행렬을 갖는 것이다.

  • 행렬의 곱은 어떻게?

    (A x M) X (M x B)A x B 의 행렬이 만들어진다.

    A x B 의 각각의 요소는,
    A x M 행렬의 행의 위치에 있는 각각 값들 과
    M x M 행렬의 열의 위치에 있는 각각의 값들을 서로 곱하여 각각을 더한 값을 요소로 갖는다.

  • 수식

    즉, New_matrix[row][col] += front_matirx[row][i] * back_matrix[i][col]
    의 식이 나온다.


코드

  def solution(arr1, arr2):
      col_max = len(arr2[0])
      row_max = len(arr1)
      result = [[0] * col_max for _ in range(row_max)]

      for row in range(row_max):
          for col in range(col_max):
              for arr_col in range(len(arr1[0])):
                  result[row][col] += arr1[row][arr_col] * arr2[arr_col][col]
      return result
profile
DFF (Development For Fun)

0개의 댓글