2740번: 행렬 곱셈
첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개
www.acmicpc.net
코드
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)]
ans = [[0]*k for _ in range(n)]
for i in range(n):
for j in range(k):
for p in range(m):
ans[i][j] += a[i][p]*b[p][j]
for i in range(n):
print(*ans[i])
우선 이 문제를 풀려면 행렬 곱하는 법을 알아야 한다.
위 문제에서 주어진대로 N×M 크기 행렬 A와 M×K 크기 행렬 B를 곱하면 N×K 크기 행렬이 된다. 그렇기 때문에 정답을 저장할 배열로 N×K의 배열을 모두 값을 0으로 초기화하여 만들어 놓고, 위의 방법대로 A와 B 행렬에서 값을 곱하여 더하면 된다.
[참고]
'문제풀이 > 수학' 카테고리의 다른 글
[Python/파이썬] 백준 1456번 거의 소수 (0) | 2024.05.14 |
---|---|
[Python/파이썬] 백준 4134번 다음 소수 (0) | 2024.04.17 |
[Python/파이썬] 백준 21275번 폰 호석만 (0) | 2024.03.22 |
[Python/파이썬] 백준 19699번 소-난다! (0) | 2024.03.09 |
[Python/파이썬] 백준 1459번 걷기 (0) | 2024.03.08 |