728x90
📌문제 출처
백준 단계별 문제풀이 - 분할정복
https://www.acmicpc.net/problem/2740
❓ 문제
❗ 풀이
- 행렬 전환하여 행렬 곱 연산 진행
📗 풀이 코드
import sys
input = sys.stdin.readline
n,m = map(int,input().split())
list_a = [list(map(int,input().split())) for _ in range(n)]
_,k = map(int,input().split()) # 행렬 곱셈이 가능하려면 a의 열과 b의 행이 같아야하기에 m 생략
list_b = [[] for _ in range(k)]
for _ in range(m):
for i,num in enumerate(map(int,input().split())): # 각 행에 대해 행렬 전환
list_b[i].append(num)
for i in range(n): # a의 행 하나씩 출력
row = [] # 각 행의 연산 결과를 담아둘 리스트
for j in range(k): # b의 행(실제는 열) 하나씩 출력
row.append(sum([a*b for a,b in zip(list_a[i],list_b[j])])) # 행렬 곱 결과 하나씩 행에 담기
print(*row)
📗 코드 해설
- 행렬 곱 연산을 쉽게 하기 위해 두번째 행렬 input을 받을 때 행렬전환을 시켜준다.
- 이후 하나의 행씩 연산을 진행
- 곱 연산으로 하나의 행이 만들어질 때마다 출력
'파이썬 문제풀이' 카테고리의 다른 글
[백준 파이썬] 1920 수 찾기 (0) | 2023.08.10 |
---|---|
[백준 파이썬] 10830 행렬 제곱 (0) | 2023.08.10 |
[백준 파이썬] 1629 곱셉 (0) | 2023.08.05 |
[백준 파이썬] 1992 쿼드트리 (0) | 2023.08.05 |
[백준 파이썬] 2630 색종이 만들기 (0) | 2023.08.03 |