[백준 BOJ_2740] 행렬 곱셈 Python 풀이
출처: 백준 온라인 저지
문제Permalink
풀이Permalink
이 문제는 분할정복으로 해결이 가능하지만 N과 M의 크기가 100으로 제한되어 있기 때문에 슈트라센 알고리즘보다 3중 for loop를 쓰는 것이 더 효율적이게 됩니다. 행렬의 거듭제곱 문제를 위해 푸는 선행문제라고 봐도 되기 때문에 단순히 행렬의 곱셈을 계산해주면 됩니다.
코드Permalink
def multiply(a, b, c):
for n in range(N):
for k in range(K):
for m in range(M):
c[n][k] += a[n][m]*b[m][k]
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)]
C = [[0] * K for _ in range(N)]
multiply(A, B, C)
for c in C:
print(*c, sep=" ")
Leave a comment