PS

백준 4811. 알약

tose33 2022. 8. 12. 14:59

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

 

4811번: 알약

입력은 최대 1000개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄이며, 병에 들어있는 약의 개수 N ≤ 30 가 주어진다. 입력의 마지막 줄에는 0이 하나 주어진다.

www.acmicpc.net

 

 

dp 문제.

 

3차원 배열 [day][통에 남은 한 조각 갯수][통에 남은 반 조각 갯수] = 경우의 수  을 만든다. 

 

통에서 알약을 꺼냈을때 두 가지 경우가 있는데 한 조각 짜리를 꺼냈을때반 조각 짜리를 꺼냈을 때다. 

 

다음날 한 조각 짜리를 꺼내는 경우를 생각해보면 오늘 한조각 짜리가 통에 남아있는 경우에만 꺼낼수 있고, 한 조각 짜리를 꺼내면 통에 한조각 짜리가 1개 줄어들고 반 조각 짜리는 1 늘어나기 때문에 [day][W-1][H+1]에 경우의 수를 더해주면 된다. 

 

다음날 반 조각 짜리를 꺼내는 경우를 생각해보면 오늘 반조각 짜리가 통에 남아있는 경우에만 꺼낼수 있고, 반 조각 짜리를 꺼내면 통에 반 조각 짜리가 1개 줄어들기 때문에 [day][W][H-1]에 경우의 수를 더해주면 된다.