From 60d141f96948adddd2d2e7631e96a35151bb6839 Mon Sep 17 00:00:00 2001 From: "Kang Changgu (Miller)" Date: Mon, 30 May 2022 09:28:36 +0900 Subject: [PATCH] =?UTF-8?q?[Miller]=20BOJ(11049):=20=ED=96=89=EB=A0=AC=20?= =?UTF-8?q?=EA=B3=B1=EC=85=88=20=EC=88=9C=EC=84=9C=20-=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=ED=92=80=EC=9D=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "src/\353\260\200\353\237\254/BOJ_11049.py" | 45 +++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 "src/\353\260\200\353\237\254/BOJ_11049.py" diff --git "a/src/\353\260\200\353\237\254/BOJ_11049.py" "b/src/\353\260\200\353\237\254/BOJ_11049.py" new file mode 100644 index 0000000..b5802a8 --- /dev/null +++ "b/src/\353\260\200\353\237\254/BOJ_11049.py" @@ -0,0 +1,45 @@ +import sys +from typing import List, Tuple, Optional + + +def solution_fail(n: int, matrices: List[List[int]]) -> int: + dp: List[List[int]] = [[0 for y in range(n)] for x in range(n)] + + for i in range(1, n + 1): + for j in range(n - i): + r, c = j, j + i + + left: int = dp[r][c - 1] + matrices[r][0] * matrices[c][0] * matrices[c][1] + right: int = matrices[r][0] * matrices[r][1] * matrices[c][1] + dp[r + 1][c] + + dp[r][c] = min(left, right) + + return dp[0][n - 1] + + +def solution_success(n: int, matrices: List[List[int]]) -> int: + dp: List[List[int]] = [[0 for y in range(n)] for x in range(n)] + + for i in range(1, n + 1): + for j in range(n - i): + r, c = j, j + i + + if i == 1: + dp[r][c] = matrices[r][0] * matrices[r][1] * matrices[c][1] + continue + + dp[r][c] = sys.maxsize + for k in range(r, c): + dp[r][c] = min(dp[r][c], dp[r][k] + dp[k + 1][c] + + matrices[r][0] * matrices[k][1] * matrices[c][1]) + + return dp[0][n - 1] + + +if __name__ == "__main__": + N: int = int(input()) + arr: List[List[int]] = [] + + for _ in range(N): + arr.append(list(map(int, input().split()))) + print(solution_success(N, arr))