기저사례
: 최종 리턴 하기
메모이제이션
: 이미 값이 존재한다면, 그값을 리턴하자.
알약 4개로 시작했을때
: 점화식의 의미보다는 두개의 경우의 수를 어떻게 활용할 건지에 대한
코드를 만들자...
1) 맨 처음에 완전한 알약 n개와, 반절짜리 알약 0개가 들어옴.
2) 완전한 알약부터 처리를 해야함. 완전한 알약을 -1하고,
반절짜리 알약을 하나 증가 시킴.
완전한 알약 소비될때까지 진행함.
3) 반절짜리 알약을 소비해야 하므로 불완전한 알약 -1씩 감소시킴.
4) 그러다가 완전한 알약과 불완전한 알약의 갯수가 모두 0일 경우
최종적인 카운팅을 함.
완전한 알약 하나를 먹고, 반절짜리 알약 하나를 증가함->dp[0][1]
반절짜리 알약을 하나 먹음. -> dp[0][0]
모두다 섭취 했음.
// 카운팅에 대한 부분을 기저사례에서 처리하자.
모두 다 섭취 즉, 완전한 알약과 반절짜리 알약을 모두 섭취한 경우
0 , 0일 경우에 카운팅, 1을 반환하도록 하자.
그리고 연달아서 재귀 처리한 부분에 대해서 += 연산을 함으로써,
해당 dp를 처리하자.
완전한 알약이 2개 있음. dp[2][0]
완전한 알약 1개를 없애고, 반절짜리 1개 증가시킴. dp[1][1]
완전한 알약 1개를 없애고, 반절짜리 1개 증가시킴. dp[0][2]
반절짜리 알약 1개를 없애자. dp[0][1]
반절짜리 알약 1개를 없애자. dp[0][0]
완전한 알약과 반절짜리 알약의 갯수가 모두 0이므로 카운팅을 시작함.
그리고 역으로 반환 받으면서 카운팅 갯수를 누적함.