일단 문제는 안 읽었고 안 풀어서 틀릴 수 있습니다
x>=5일 때를 보면 dp(x-2),dp(x-3)을 호출하는데, 이런 식으로 하면 동일한 계산을 반복하게 됩니다.
예를 들어서 dp(x-2)에서도 dp(x-5)를 호출할 것이고, dp(x-3)에서도 dp(x-5)를 호출하겠죠. 그런데 제 생각에는 dp(x-5)의 값은 언제 불러도 같은 것 같은데, 값을 계산하는 것을 반복하게 됩니다.
더 들어가면 dp(x)는 dp(x-5)를 두 번 호출하고, 그러면 각각에서 dp(x-10)을 두 번씩 호출해서 4번 호출하고, ... 해서 dp(x-100)은 최소한 100만 번은 호출되게 됩니다.
함수의 값을 리턴하기 전에 결과를 어딘가에 저장하고, 다시 호출될 경우 그 값을 리턴하는 식으로 하는 것이 좋습니다.
minripex 3년 전
질문1.시간초과문제는 불필요한 재귀함수를 써서 그런걸까요?
질문2.재귀함수가 시간복잡도 성능을 떨어뜨린건가요?
질문3.제가 푼방법은 DP로 푼문제가아니죠?