Engineering WIKI/Programmers
[프로그래머스] 행렬의 곱셉
wonos
2022. 5. 23. 16:33
코딩테스트 연습 - 행렬의 곱셈
[[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
행렬의 곱셈, 행렬의 거듭제곱
행렬의 곱셈은 행렬의 실수배에 비하면 훨씬 어려워요. 행렬을 곱할 수 있는 조건이 있어 이 조건을 만족하지 않으면 곱셈을 하지 못하는 경우도 있어요. 게다가 계산방식도 매우 까다롭죠. 도
mathbang.net
다른 사람 풀이
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])):
for k in range(len(arr1[0])):
answer[i][j] += (arr1[i][k] * arr2[k][j])
return answer
다른 사람 풀이 2
def productMatrix(X, Y):
answer = [[sum(a*b for a, b in zip(X_row,Y_col)) for Y_col in zip(*Y)] for X_row in X]
return answer
# 아래는 테스트로 출력해 보기 위한 코드입니다.
a = [[ 1, 2], [2, 3]];
b = [[ 3, 4], [5, 6]];
print("결과 : {}".format(productMatrix(a,b)));
Y : [[5, 4, 3], [2, 4, 1], [3, 1, 1]]
for Y_col in zip(*Y):
print(Y_col)
결과 : (5, 2, 3) (4, 4, 1) (3, 3, 1)