알고리즘 풀이/프로그래머스
[Level 2] 행렬의 곱셈
iwannawebfullstack
2021. 9. 27. 22:59
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