파이썬으로 두 행렬 곱하기 구현하는 방법
1. 문제
2. 풀이
n*m행렬과 m*k 행렬을 곱하면, n*k행렬이 되며,
n*k 행렬의 원소 $c_{ij}$는 다음과 같이 정의될 것이다
$$c_{ij} = \sum_{w = 0}^{k-1} a_{iw}b_{wj}$$
이차원 리스트를 적절히 정의하고, i,j,w의 3중 for문으로 행렬 곱셈을 만들 수 있다
from sys import stdin
n,m = map(int,stdin.readline().split())
A = [list(map(int,stdin.readline().split())) for _ in range(n)]
m,k = map(int,stdin.readline().split())
B = [list(map(int,stdin.readline().split())) for _ in range(m)]
C = [[0]*k for _ in range(n)]
for i in range(n):
for j in range(k):
for w in range(m):
C[i][j] += A[i][w]*B[w][j]
for row in C:
print(*row)
'알고리즘 > 선형대수학 알고리즘' 카테고리의 다른 글
reduced row echelon form을 구하는 Gauss-Jordan elimination 구현하기 (0) | 2023.09.21 |
---|---|
행렬을 이용한 피보나치 수열 문제의 해법 (0) | 2023.03.19 |
TAGS.