코드#include #include #include using namespace std;int n, happy[23], sad[23],dp[23][103];int go(int idx, int hp) { if(hp > n; memset(dp, -1, sizeof(dp)); for(int i = 0; i > sad[i]; for(int i = 0; i > happy[i]; cout 풀이0 - 1 냅색문제랑 비슷한 유형이다. 인사를 하거나 하지 않는 경우를 나눠서 생각했다. 인사를 한다면 체력을 깎고 행복을 올린다. 인사를 하지 않으면 다음 케이스로 넘어간다. 만약 체력이 0이하가 되면 매우 작은 값을 리턴한다. 마지막 사람까지 만난 경우, 체력이 남아있을 때 최대 행복을 출력한다.