BOJ
[BOJ][DP] 1010. 다리 놓기
반팔목도리뱀
2018. 1. 14. 00:48
문제 -> https://www.acmicpc.net/problem/1010
이 문제는 DP를 활용한 풀이와 확통의 조합을 사용하여 해결할 수가 있다.
하지만 나는 그냥 DP로 풀어버렸다.
이왕 DP문제인데 DP로 풀어야 재밌지..
다른 사람들은 죄다 조합으로만 풀더이라.
(물론, 확실히 조합이 더 빨라서 그런거겠지만.)
위 그림의 사이트 상태는
N: 3, M: 4 다.
어라? 가만보면
그 속에 (2,3)과 (2,2)가 들어있다.
옳지.
이를 통해 알 수 있는 사실은
전에 계산했던 값들을 이용하여 새 DP값을 얻을 수 있다는 것.
일단 N이 1인 경우의 수들을 구해둔 상태를 전제로 해야한다.
위 그림의 동그라미 친 부분처럼,
부분적인 경우의 수가 더 이상 없을때까지
계속 더해야한다.
더하는 식은 dp[i][j] =+= dp[i-1][k] 로 세우면 되고
언제까지 더하느냐.
경우의 수가 더 이상 없을 때까지니까,
i-1 == k 일때까지 더해주면 된다.