티스토리 뷰

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

 

 


 

 

<나의 풀이>

import numpy as np 
def solution(arr1, arr2): 
    answer = np.dot(np.array(arr1), np.array(arr2)) 
    return answer.tolist()

 

처음에 삼중 for문으로 돌렸다가 역시나 시간초과 떠서

다양하게 코드를 수정해보았지만..

시간초과의 늪을 벗어날 수 없었다..

그래서 결국 numpy 사용한 문제😥

 


 

<다른 사람의 풀이>

def solution(arr1, arr2): 
     return [[sum(a*b for a, b in zip(arr1_row,arr2_col)) for arr2_col in zip(*arr2)] for arr1_row in arr1]
    
    
# <배운점> 
# => numpy 쓰지 않고 푼 점

 

def solution(arr1, arr2): 
    answer = []
    for y1 in range(len(arr1)):
        a=[]
        for x2 in range(len(arr2[0])):
            n = 0
            for x1 in range(len(arr1[0])):
                n += arr1[y1][x1] * arr2[x1][x2]
            a.append(n)
        answer.append(a)
    return answer
    
    
# <배운점> 
# => 삼중 for문으로 푸는 법..나는 왜 시간초과가 떴는가ㅠㅠㅠ

 

728x90
반응형
댓글