- Date : 2021.02.14(일)
- Time : 60분
-
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
-
제한사항
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
: 먼저 행렬의 곱셈이라는 걸 학교다닐 때 배웠지만 기억이 안나서 다시 공부를 하느라 오래걸렸다. 사실 이해가 잘 되지 않았다.
제일 이해가 안갔던 부분은 그래서 결과물 AB 행렬의 크기는 어떻게 생성되는가? 였을 때 len(A행렬) * len(B행렬[0])
로 완성된다.
answer = [[0 for col in range(len(arr2[0]))] for row in range(len(arr1))]
이 부분을 계속 이해를 못해서 어려웠다. 그리고 AB 행렬에 값을 넣을 때( = Answer) Answer[n][m]
이라고 생각했을 때 n을 A행렬의 기준으로 잡고, m을 B행렬의 기준으로 잡아주었다.
for i in range(len(answer)):
for j in range(len(answer[0])):
for t in range(len(arr2)):
answer[i][j] += arr1[i][t] * arr2[t][j]
: 그래서 A행렬과 B행렬의 값을 곱한 값을 answer에 쌓아주었다.