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

 

'PS > 프로그래머스' 카테고리의 다른 글

스킬트리 (lv2)  (0) 2022.08.12
k진수에서 소수 개수 구하기 (lv2)  (0) 2022.08.11
JadenCase 문자열 만들기 (lv2)  (0) 2022.08.11
양궁대회 (lv2)  (0) 2022.08.11
하노이의 탑 (lv2)  (0) 2022.08.11