File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed
minjeong/DynamicProgramming Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change 1+ import sys
2+ input = sys .stdin .readline
3+
4+ # 테스트 케이스 입력
5+ T = int (input ())
6+
7+ for _ in range (T ):
8+ # 입력 처리
9+ K = int (input ())
10+ files = [0 ] + list (map (int , input ().split ()))
11+ prefix_sum = [0 ] * (K + 1 )
12+
13+ # 누적합 계산
14+ for i in range (1 , K + 1 ):
15+ prefix_sum [i ] = prefix_sum [i - 1 ] + files [i ]
16+
17+ # DP 배열 초기화
18+ dp = [[0 ] * (K + 1 ) for _ in range (K + 1 )]
19+
20+ # DP 계산
21+ for count in range (1 , K ): # 합치는 파일 개수
22+ for start in range (1 , K - count + 1 ): # 시작 인덱스
23+ end = start + count
24+ MIN = sys .maxsize
25+ for mid in range (start , end ): # 중간 분할점
26+ MIN = min (MIN , dp [start ][mid ] + dp [mid + 1 ][end ])
27+ dp [start ][end ] = MIN + prefix_sum [end ] - prefix_sum [start - 1 ]
28+
29+ # 결과 출력
30+ print (dp [1 ][K ])
You can’t perform that action at this time.
0 commit comments