ps | |
---|---|
링크 | programmers.co.kr/… |
출처 | 프로그래머스 |
문제 번호 | 12942 |
문제명 | 최적의 행렬 곱셈 |
레벨 | Level 4 |
분류 |
동적 계획법 |
시간복잡도 | Optimal: O(nlogn), 실제구현: O(n^3) |
인풋사이즈 | n<=200 |
사용한 언어 | Python |
해결날짜 | 2021/01/21 |
"""Solution code for "Programmers 12942. 최적의 행렬 곱셈".
- Problem link: https://programmers.co.kr/learn/courses/30/lessons/12942
- Solution link: http://www.teferi.net/ps/problems/programmers/12942
"""
def solution(matrix_sizes):
n = len(matrix_sizes)
dp = [[0] * n for _ in range(n)]
for l in range(1, n):
for i in range(n - l):
j = i + l
dp[i][j] = min(
dp[i][k] + dp[k + 1][j] +
matrix_sizes[i][0] * matrix_sizes[k][1] * matrix_sizes[j][1]
for k in range(i, j))
return dp[0][-1]