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로 곱해주었습니다
예시
'자료구조&알고리즘 > 백준' 카테고리의 다른 글
백준 | [파이썬 Python] 2206 벽 부수고 이동하기 (0) | 2024.08.30 |
---|---|
백준 | [파이썬 Python] 7579 앱 (0) | 2024.06.19 |
백준 | [파이썬 Python] 11066 파일 합치기 (0) | 2024.06.10 |
백준 | [파이썬 Python] 11286 절댓값 힙 (0) | 2024.06.02 |
백준 | [파이썬 Python] 12015 가장 긴 증가하는 부분 수열 2 (0) | 2024.06.02 |