728x90

https://programmers.co.kr/learn/courses/30/lessons/12949

출처 : 프로그래머스

 

 

코딩테스트 연습 - 행렬의 곱셈

[[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]]

programmers.co.kr


def solution(arr1, arr2):
    answer = [[0 for _ in range(len(arr2[0]))] for _ in range(len(arr1))]

    for i in range(len(arr1)): # 0, 1, 2
        for j in range(len(arr2[0])): # 0, 1
            for k in range(len(arr1[0])): # 0, 1
                answer[i][j] += arr1[i][k] * arr2[k][j]
    return answer

풀이 1

for 문을 3번 써서 풀이했다. 

 

def solution(arr1, arr2):
    return [[sum(a*b for a,b in zip(ROW,COL)) for COL in zip(*arr2)] for ROW in arr1 ]

풀이 2

zip 을 활용해 풀이하는 방법이다.

 

numpy 에서 np.array 로 바꿔서 a*b 해도 된다.

+ Recent posts