대학 전공과목이었던 AI기초프로그래밍의 수업 내용을 기억하여 행렬의 곱셈을 돌려 보았다.
행렬의 곱셈을 수행할 때는 먼저 나온 행렬의 가로줄과 뒤에 나온 행렬의 세로줄의 요소를 대응시켜 곱셈 연산읗 수행하면 된다.
N×M 행렬과 M×K 행렬을 곱하면 N×K 행렬의 형태가 갖춰진다.
행렬을 읽는 방법 : N×M → N행 M열(가로 M, 세로 N)
N, M = map(int, input().split())
A = []
for _ in range(N):
A.append(list(map(int, input().split())))
B = []
M, K = map(int, input().split())
for _ in range(M):
B.append(list(map(int, input().split())))
C = [[0] * K for _ in range(N)]
for n in range(N):
for k in range(K):
for m in range(M):
C[n][k] += A[n][m] * B[m][k]
for a in range(N):
for b in range(K):
print(C[a][b], end = " ")
print("")
📌 단순한 문제였는데 행렬에 대한 기본 개념이 부족해서 행렬 곱셈 기본 이론부터 다시 보고 돌려보느라 시간이 많이 지체되었다.
📌 행렬 곱셈의 주의 사항 : (N×M)행렬과 (M×N)행렬을 곱한 결과와 (M×N)행렬과 (N×M)행렬을 곱한 결과는 다르다.