PS/프로그래머스
행렬의 곱셈 (lv2)
ForteQook
2022. 8. 11. 18:51
문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.
제한 조건
- 행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
- 행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
- 곱할 수 있는 배열만 주어집니다.
행렬의 전치를 zip 하나로 할 수 있다는것을 알아간다.
from functools import reduce
def solution(arr1, arr2):
n,m = len(arr1),len(arr2[0])
answer = [[0]*m for _ in range(n)]
arr2 = list(zip(*arr2))
for row in range(n):
for col in range(m):
answer[row][col] = reduce(lambda x,y : x+(y[0]*y[1]),zip(arr1[row],arr2[col]),0)
return answer