자료구조&알고리즘/백준

백준 | [파이썬 Python] 11049 행렬 곱셈 순서

두잇 두두 2024. 6. 10. 23:00
728x90

 


문제

 

 

코드

import sys
input = sys.stdin.readline

n = int(input().strip())

matrices = []
for _ in range(n):
    r, c = map(int, input().split())
    matrices.append((r, c))

dp = [[0] * n for _ in range(n)]

for length in range(1, n):
    for i in range(n - length):
        j = i + length
        dp[i][j] = float('inf')

        for k in range(i, j):
            cost = dp[i][k] + dp[k + 1][j] + matrices[i][0] * matrices[k][1] * matrices[j][1]
            if cost < dp[i][j]:
                dp[i][j] = cost

print(dp[0][n - 1])

 

 

설명

앞 선 11066 파일합치기를 참조하면 3번째 for문을 통해 cost가 만들어지는 과정을 알 수 있다

그리고 또 하나의 알고리즘인 행렬 곱셈

위 비용을 계산식이 뒷쪽 matrices로 곱해주었습니다

 

예시