N을 입력받고 N에서 1뺀 수, 2를 뺀 수, 3을 뺀 수를 재귀함수에 넣어서 0으로 만듭니다.
0으로 정상적으로 만들어졌다는 것은ㄴ 1,2,3을 이용해 잘 더해졌다는 의미이므로 ans를 1 증가시켜 만들 수 있는 경우임을 체크합니다.
만약 계속 빼다가 0보다 작아졌다면 1,2,3을 조합해서 만들 수 없는 경우이므로 return 합니다. 예를들어 N=4일때, add(n-2)-> add(n-3)을 타고 들어갔다면 2+3=5이므로 이미 N을 넘었습니다. 이때 뺐으므로 0보다 작아졋으므로 이는 더해서 만들 수 없는 경우입니다.
DP로 문제 풀기
이 문제는 DP로 분류되어 있는 만큼 DP로도 풀 수 있습니다. 1을 만드는 경우는 1개 2를 만드는 경우는 2개 3을 만드는 경우는 4개 입니다. 그러면 4를 만드는 경우는 몇개일까요??? 예시에도 나와있듯이 7개입니다. 뭔가 보이지 않나요??? 네 바로 4개를 만드는 경우의 수는 1 + 2 + 4 = 7 입니다. 이 규칙을 찾아내셨다면 DP를 이용해 풀 수 있습니다. 피보나치와 같습니다