합분해
-
백준 2225번 합분해 [DP] :: 마이구미알고리즘 풀이/동적계획법 2017. 3. 9. 20:11
이번 글은 백준 알고리즘 문제 2225번 "합분해" 를 다뤄본다.동적계획법으로 접근하는 문제이다.일단 문제를 보자. 0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오.덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다. 문제는 간단하다.하지만 점화식을 생각하기에는 어렵다.간단하게 먼저 2차원 배열로 생각해보자.DP[K][N] = K개를 더해서 합이 N일 경우를 생각할 수 있다.이어서 그림을 통해 알아보자. 그림을 설명해보자면, 합 N을 만들기 위해서는 0~N까지 정수가 다양하게 존재한다.그 중 마지막 수를 L라고 가정하자.L 이전의 수들의 합은 N-L 이라는 것을 알 수 있다.또한 K개..