목차

최적의 행렬 곱셈

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]