

# 답
N, M = map(int, input().split())
matrix1 = [list(map(int, input().split())) for _ in range(N)]
M, K = map(int, input().split())
matrix2 = [list(map(int, input().split())) for _ in range(M)]
ans = [[0] * K for _ in range(N)]
for n in range(N):
for k in range(K):
tot = 0
for m in range(M):
tot += matrix1[n][m] * matrix2[m][k]
ans[n][k] = tot
for i in range(len(ans)):
print(*ans[i])
# 행렬 곱셈

1. (곱셈 기호 앞에 있는 행렬의 열의 개수) == (곱셈 기호 뒤에 있는 행렬의 행의 개수) 일 때만 곱셈 가능
2. 곱셈 기호 앞에 있는 행렬의 i행과, 곱셈 기호 뒤에 있는 행렬의 j열의 성분을 차례대로 곱하여 더한 값이 정답 행렬의 (i, j) 성분
728x90
반응형
'Algorithm > BaekJoon' 카테고리의 다른 글
(파이썬) 백준 1725번 "히스토그램" (0) | 2023.09.27 |
---|---|
(파이썬) 백준 2293번 "동전 1" (0) | 2023.03.04 |
(파이썬) 백준 1629번 "곱셈" (0) | 2022.05.23 |
(파이썬) 백준 10986번 "나머지 합" (0) | 2022.05.23 |
(파이썬) 백준 1676번 "팩토리얼 0의 개수" (0) | 2022.05.23 |


# 답
N, M = map(int, input().split()) matrix1 = [list(map(int, input().split())) for _ in range(N)] M, K = map(int, input().split()) matrix2 = [list(map(int, input().split())) for _ in range(M)] ans = [[0] * K for _ in range(N)] for n in range(N): for k in range(K): tot = 0 for m in range(M): tot += matrix1[n][m] * matrix2[m][k] ans[n][k] = tot for i in range(len(ans)): print(*ans[i])
# 행렬 곱셈

1. (곱셈 기호 앞에 있는 행렬의 열의 개수) == (곱셈 기호 뒤에 있는 행렬의 행의 개수) 일 때만 곱셈 가능
2. 곱셈 기호 앞에 있는 행렬의 i행과, 곱셈 기호 뒤에 있는 행렬의 j열의 성분을 차례대로 곱하여 더한 값이 정답 행렬의 (i, j) 성분
728x90
반응형
'Algorithm > BaekJoon' 카테고리의 다른 글
(파이썬) 백준 1725번 "히스토그램" (0) | 2023.09.27 |
---|---|
(파이썬) 백준 2293번 "동전 1" (0) | 2023.03.04 |
(파이썬) 백준 1629번 "곱셈" (0) | 2022.05.23 |
(파이썬) 백준 10986번 "나머지 합" (0) | 2022.05.23 |
(파이썬) 백준 1676번 "팩토리얼 0의 개수" (0) | 2022.05.23 |