윗분 말씀도 맞지만, 시간 복잡도 O(NT) 정도로는 이 문제에서 시간 초과가 될 정도는 아닙니다.
이 코드의 문제점은 애초에 메모이제이션이 올바르게 수행되지 않았다는 점입니다. 이미 계산한 값인지를 보기 위해 dp[n]이 0이 아닌지를 확인하고 있는데, 실제로는 dp 배열에는 dp[0]과 dp[1]에만 값을 넣고 있고 2부터 n까지는 dp0과 dp1 배열에만 값을 넣고 있어 이미 계산한 값인지 알 수 없게 됩니다. 결국 완전탐색을 하는 거나 다름없는 코드입니다.
skiwer98 2년 전
다이나믹프로그래밍을 사용한다고 한건데 시간초과가 뜹니다. 어디서 뜬걸까요?