알고리즘 풀이/프로그래머스

[Level 2] 행렬의 곱셈

mhko411 2021. 9. 27. 22:59
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


접근

행렬을 곱하기 위해서는 행렬 A와 B가 있을 때 행렬 A의 열 개수와 행렬 B의 행 개수가 같아야 한다.

그리고 행렬의 곱을 그대로 코드로 구현하였다.

 

구현

- arr2의 행과 열의 개수를 N과 M에 저장했다.

- 이제 arr1에서 하나의 리스트를 꺼낸다.

- arr2를 탐색하면서 arr1에서 꺼낸 리스트의 숫자들을 행렬 곱을 해주고 이를 ans에 저장한다.

- 모두 탐색한 후에는 ans를 answer에 추가한다.

def solution(arr1, arr2):
    answer = []
    N = len(arr2)
    M = len(arr2[0])
    
    for numbers in arr1:
        K = len(numbers)
        ans = []
        
        for i in range(M):
            idx = 0
            total = 0
            for j in range(N):
                total += numbers[idx] * arr2[j][i]
                idx += 1
            ans.append(total)
        answer.append(ans)
                
    return answer

'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

[Level 1] 예산  (0) 2021.11.09
[Level 2] 배달  (0) 2021.11.08
[Level 2] 2개 이하로 다른 비트  (0) 2021.09.27
[Level 2] 압축  (0) 2021.09.23
[Level 2] 쿼드압축 후 개수 세기  (0) 2021.09.15