[백준] 11066번: 파일 합치기 - Python

2023. 2. 23. 22:29백준 & 프로그래머스

문제보기

 

https://www.acmicpc.net/problem/11066

 

11066번: 파일 합치기

소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본

www.acmicpc.net

 

 

 

 

 

풀이 및 코드

 

해당 문제는 dp를 이용해 푸는 문제로 solved.ac.기준 골드 3에 랭크되어 있다. 요즘따라 dp 문제를 유독 많이 푸는 것 같다ㅎ

 

핵심 점화식은 다음과 같다. 

for i in range(s, e):
    dp[s][e] = min(dp[s][e], dp[s][i] + dp[i+1][e])
dp[s][e] += sum(arr[s, e+1])

 

 

dp에는 s부터 e까지 합치는 데 필요한 최소비용이 저장되어 있다. 즉 필자는 i를 기준으로 (s,i), (i+1)으로 구간을 나누어 최소비용을 구한뒤 그 합이 작은 값을 찾고자 했다.