# A 행렬을 선언합니다.
N, A_M = map(int, input().split())
A = []
for _ in range(N):
A.append(list(map(int, input().split())))
# B 행렬을 선언합니다.
B_M, K = map(int, input().split())
B = []
for _ in range(B_M):
B.append(list(map(int, input().split())))
result = []
# A에서 각 row에 해당하는 list를 가져옵니다.
for A_subset in A:
# A_subset row의 n 번째 원소는 B의 n 번째 col과 곱해집니다.
# 곱한 후, 더해주면 결과 행렬의 n 번째 row가 만들어집니다.
# 이를 위해 열 갯수만큼의 B_subset을 만듭니다.
B_subset = [0] * K
# A_subset의 col 갯수만큼 for-loop가 반복됩니다.
for i, ele in enumerate(A_subset):
# A_subset row의 i 번째 숫자와 B의 i 번째 행에 해당하는 수를 곱합니다.
# 숫자와 행을 바로 곱하는 작업은 선형 조합(맞나?)를 생각해보면 쉽습니다.
target_subset = [ele * num for num in B[i]]
# B_subset에 전부 더해주면 끝
B_subset = [sum(x) for x in zip(B_subset, target_subset)]
result.append(B_subset)
for row in result:
print(*row)
이 문제는 행렬곱만 알고 있다면, 3중 for-loop로 쉽게 해결할 수 있다.
'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글
백준 2749번(python) (0) | 2020.07.12 |
---|---|
백준 10830번(python) (0) | 2020.07.11 |
백준 11401번(python) (0) | 2020.06.05 |
백준 1629번(python) (0) | 2020.05.04 |
백준 1780번(python) (0) | 2020.05.04 |