[알고리즘] 행렬 곱하기

짱구석·2021년 2월 4일
0
post-thumbnail

문제

행렬 2개가 주어졌을 때 곱할 수 있는 행렬인지 확인하고 곱할 수 있다면 그 결과를, 곱할 수 없다면 -1을 출력하는 프로그램을 만들어주세요.

input = [[1, 2],[2, 4]],[[1, 0],[0, 3]]
output = [[1,6], [2,12]]

개념

  1. 행렬 치환
  2. 곱의 합
  3. 연산

코드

def matrix_mul(matrix_1, matrix_2):
    #곱의 합
    def sum_product(arr1, arr2):
        return sum([a * b for a, b in zip(arr1, arr2)])

    #행렬 뒤집기
    def tran(matrix):           
        return [[matrix[j][i] for j in range(len(matrix))] for i in range(len(matrix[0]))]

    return [[sum_product(arr1, arr2) for arr2 in tran(matrix_2)] for arr1 in matrix_1]

if __name__ == '__main__':
    print(matrix_mul([[1, 2],[2, 4]],[[1, 0],[0, 3]]))
    # [[1,6], [2,12]]

Reference

제주 코딩 베이스 캠프 코딩 페스티벌 python 100제

0개의 댓글