공부 자료/알고리즘

(Python/파이썬) 백준 2740번 - 행렬 곱셈

뚜루뚜루세니 2021. 8. 5. 10:10
728x90

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

 

2740번: 행렬 곱셈

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

www.acmicpc.net

1. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
N,M = map(int, input().split())
A=[]
for i in range(N):
    A.append(list(map(int,input().split())))
 
M,K =  map(int, input().split())
B=[]
for i in range(M):
    B.append(list(map(int,input().split())))
 
result = [[0 for _ in range(K)] for _ in range(N)]
 
for i in range(N):
    for j in range(K):
        for l in range(M):
            result[i][j]+=A[i][l]*B[l][j]
 
for row in result:
    for j in row:
        print(j,end=" ")
    print()
 
cs

2. 해결과정

행렬의 곱셈은 N*M 행렬과 M*K를 곱했을 때 N*K 행렬을 만들게 된다.

A행렬과 B행렬에 각각 값을 입력 받고 result라는 리스트에 최종적으로 곱한 결과를 저장해주면된다.

 

3. 느낀점

처음에 result 범위를 설정하지 않고 단순하게 빈리스트로 선언했더니 틀렸다. 그거 외에는 괜춘

728x90