본문 바로가기

Algorithm/프로그래머스 연습 문제

프로그래머스 / 코딩 테스트 / 행렬의 곱셈

문제 설명

 

 

문제 해결

 

선형대수를 배울 때 행렬곱에 대해서 배운 적이 있다.

 

 

[스크랩] 행렬이란 무엇인가?- 선형대수.벡터와의 관계

선형대수란 무엇인가? [행렬.벡터와의 관계] -재능있는 대한민국 고딩들을 위해- 선형대수란 말그대로 선형대수다. 선형은 곧 직선이요 대수는 곧 방정식이다. 곧, 직선방정

blog.daum.net

 

m * n, n * r 크기의 행렬을 곱하면 m * r 크기의 행렬이 나온다.

첫 번째 행렬의 행 벡터들과 두 번째 행렬 열 벡터들을 내적하여 새로운 행렬을 구성한다.

 

 

두 번째 행렬의 행과 열을 바꿔준다.

 

 

[파이썬] 이차원 리스트 행과 열을 쉽게 바꾸기

다음과 같은 이차원 리스트가 있다고 가정하자. mylist = [ [1,2,3], [4,5,6], [7,8,9] ] 이차원 리스트 행과 열을 바꾸는 코드는 어떻게 될까? 파이썬의 유용한 함수인 zip 함수를 모르면 다음과 같은 코드

cbw1030.tistory.com

 

첫 번째의 행렬의 행벡터와 두 번째 행렬의 열 벡터를 내적한 값을 리스트에 추가하고

리스트를 다시 리스트에 추가하여 행렬곱 연산한 데이터가 저장된 리스트를 반환한다.

 

def solve(arr1, arr2):
    res = []
    
    arr2 = list(map(list, zip(*arr2)))
    
    for i in range(len(arr1)):
        temp = []
        for j in range(len(arr2)):
            temp2 = 0
            for k in range(len(arr2[j])):
                temp2 += arr1[i][k] * arr2[j][k]
            temp.append(temp2)
        res.append(temp)
            
    return res

def solution(arr1, arr2):
    answer = solve(arr1,arr2)
    return answer