티스토리 뷰

728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/12949?language=python3 

 

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

[[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)):
        for j in range(len(arr2[0])):
            result = 0
            for k in range(len(arr1[0])):
                answer[i][j] += (arr1[i][k] * arr2[k][j])
    return answer

answer = [[0] * len(arr2[0])] * len(arr1) 이런식으로 answer을 선언했다가 안되어서 위에 방식으로 answer를 선언했다.

 

행렬은 arr1에 행이랑 arr2에 열이랑 곱하면 된다.

arr1은 행이고 arr1[0]은 열이다.

2 3 2     5 4 3      22 22 11

4 2 4  *  2 4 1  =  36 28 18

3 1 4     3 1 1      29 20 14

=> (2 * 5) + (3 * 2) + (2 * 3) = 22 ....

 

arr1의 1행당 arr2의 모든 열을 곱해주는데 arr1의 열의 인덱스 끼리 곱해준다.

 

행렬 곱셈은 3중 for문 메모..

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30