2/프로그래머스

프로그래머스 연습 문제 - 행렬의 곱셈

하례은 2020. 9. 17. 01:47

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 col in range(len(arr2[0]))] for row in range(len(arr1))]
    for i in range(len(arr1)):
        for n in range(len(arr2[0])):
            for x in range(len(arr1[0])):
                answer[i][n] += arr1[i][x] * arr2[x][n] 

    return answer

 

 

#다른 풀이 방법

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

물론 프로그래머스에선 사용 불가능하다.

numpy를 사용하는 방법도 알아둘것!

 

 

 

#2차원 배열 생성

answer = [[0 for col in range(len(arr2[0]))] for row in range(len(arr1))]

 

 

#다른 사람의 풀이

def solution(A, B):
    return [[sum(a*b for a, b in zip(A_row,B_col)) for B_col in zip(*B)] for A_row in A]

zip을 이용한 방법인데....개쩐다. 오늘도 하나 배워간다.

 

 

 

 

항상 연습문제를 풀때 생각하는건데 나는 논리력과 생각하는 습관을 가질 필요가 있다. 왜냐면 나는 생각도 없고 논리력도 없기 때문 ㄱ-...

반성해야되겠군...........