문제/백준_파이썬
169. 2740(행렬곱셈) - 파이썬
sm_hope
2022. 8. 2. 21:08
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(N)]
M, K = map(int, input().split())
B = [list(map(int, input().split())) for _ in range(M)]
result = [[0 for _ in range(K)] for _ in range(N)]
for n in range(N):
for k in range(K):
for m in range(M):
result[n][k] += A[n][m] * B[m][k]
for i in result:
print(*i)
문제요약
행렬 곱을 진행하라
설명
이 문제의 핵심은 아래와 같다.
N*M 행렬과 M*K 행렬을 곱하면 N*K행렬이 나온다.
숫자가 작기 때문에 크게 어렵게 생각할 것 없이 행렬곱 식을 그대로 사용하면 된다.
따라서
for n in range(N):
for k in range(K):
for m in range(M):
result[n][k] += A[n][m] * B[m][k]
다음과 같은 식이 나오게 된 것이다.