행렬의 곱 (Programmers 12949)

문파이더맨·2021년 7월 4일
0

Algorithm

목록 보기
38/58
post-thumbnail

🧑‍💻 행렬의 곱셈

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

제한사항

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

입출력 예

arr1arr2return
[[1, 4], [3, 2], [4, 1]][[3, 3], [3, 3]][[15, 15], [15, 15], [15, 15]]
[[2, 3, 2], [4, 2, 4], [3, 1, 4]][[5, 4, 3], [2, 4, 1], [3, 1, 1]][[22, 22, 11], [36, 28, 18], [29, 20, 14]]

🧑‍💻 해결방법

  • 3중 반복문을 돌리면 된다. (비록 O(N^3)이라 하더라도...)

🧑‍💻 코드

def solution(arr1, arr2):
   answer = []
   answer_row = len(arr1)
   answer_col = len(arr2[0])

   for i in range(answer_row) :
       tmp = []
       for j in range(answer_col) :
           result = 0
           for k in range(len(arr1[0])) :
               val1 = arr1[i][k]
               val2 = arr2[k][j]
               result += val1 * val2
           tmp.append(result)
       answer.append(tmp)

   return answer

🧑‍💻 총평

  • 로직이 겁~나 간단하지만 가장 안쪽에 있는 반복문에서 이마를 탁 쳤다.
  • arr1[0]의 길이만큼 횟수를 반복한다는 것을 알아채면 겜끝!
profile
Sever 개발할래요.

0개의 댓글