본문 바로가기
알고리즘 테스트/백준

백준 2740: 행렬 곱셈 (파이썬)

by codeyaki 2022. 4. 5.
반응형

문제: https://www.acmicpc.net/problem/2740

 

2740번: 행렬 곱셈

첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개

www.acmicpc.net


코드

#https://teching.tistory.com/
import sys

n1, m1 = map(int, sys.stdin.readline().split())
matrix1 = [list(map(int, sys.stdin.readline().split())) for _ in range(n1)]
n2, m2 = map(int, sys.stdin.readline().split())
matrix2 = [list(map(int, sys.stdin.readline().split())) for _ in range(n2)]
res = [[0]*m2 for _ in range(n1)]
for i in range(n1):
    for j in range(m2):
        for k in range(m1):
            res[i][j] += matrix1[i][k] * matrix2[k][j]

for line in res:
    print(*line)

 

해설

단순하게 행렬의 곱을 구현하는 문제이다.

별다른 어려울것이 없으나 행렬의 곱의 크기에 주의해야한다.

m*n 행렬과 n*p 행렬을 곱한다고 하면 결과 행렬은 m*p 행렬이 만들어진다 (n은 같아야함)

https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88

이를 토대로 행렬을 구현하면 된다.

반응형