1. 문제
2740번: 행렬 곱셈
첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개
www.acmicpc.net
2. 풀이
n*m행렬과 m*k 행렬을 곱하면, n*k행렬이 되며,
n*k 행렬의 원소 cij는 다음과 같이 정의될 것이다
cij=k−1∑w=0aiwbwj
이차원 리스트를 적절히 정의하고, 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)
728x90
'알고리즘 > 선형대수학 알고리즘' 카테고리의 다른 글
reduced row echelon form을 구하는 Gauss-Jordan elimination 구현하기 (0) | 2023.09.21 |
---|---|
행렬을 이용한 피보나치 수열 문제의 해법 (0) | 2023.03.19 |