Skip to content

Commit 5b5a32b

Browse files
committed
백준 11049번 행렬 곱셈 순서 v2
문제 링크: https://www.acmicpc.net/problem/11049
1 parent 1dcace1 commit 5b5a32b

File tree

4 files changed

+57
-0
lines changed

4 files changed

+57
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import sys
2+
3+
4+
def solve():
5+
input = sys.stdin.readline
6+
N = int(input().strip())
7+
mats = [list(map(int, input().strip().split())) for _ in range(N)]
8+
dp = [[sys.maxsize for _ in range(N)] for _ in range(N)]
9+
10+
for i in range(N):
11+
dp[i][i] = 0
12+
13+
for bgn in range(N - 1):
14+
end = bgn + 1
15+
dp[bgn][end] = mats[bgn][0] * mats[bgn][1] * mats[end][1]
16+
17+
for l in range(2, N):
18+
for bgn in range(N - l):
19+
end = bgn + l
20+
for mid in range(bgn, end):
21+
dp[bgn][end] = min(dp[bgn][end], \
22+
dp[bgn][mid] + dp[mid + 1][end] \
23+
+ (mats[bgn][0] * mats[mid][1] * mats[end][1]))
24+
25+
print(dp[0][N - 1])
26+
27+
28+
if __name__ == '__main__':
29+
solve()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
3
2+
5 3
3+
3 2
4+
2 6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
90
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import sys
2+
from pathlib import Path
3+
from unittest import TestCase
4+
from main import solve
5+
6+
7+
class Test(TestCase):
8+
def my_solve(self, testcase_input):
9+
sys.stdin = open(testcase_input, 'r')
10+
stdout = sys.stdout
11+
sys.stdout = open('stdout.txt', 'w')
12+
solve()
13+
sys.stdout.close()
14+
sys.stdout = stdout
15+
16+
def test_solve(self, testcase_number: str):
17+
self.my_solve('test' + testcase_number + '.txt')
18+
self.assertEqual(
19+
Path('test' + testcase_number + '_answer.txt').read_text().strip(),
20+
Path('stdout.txt').read_text().strip())
21+
22+
def test1_solve(self):
23+
self.test_solve('1')

0 commit comments

Comments
 (0)