go(x)가 "x에서 1로 가는 비용"임을 생각하면 재귀를 돌리는 과정 전체를 떠올릴 필요는 없습니다.
예를 들어, x가 6이라면 다음 세 가지를 고려할 것입니다.
1. 1을 뺀다. 1을 빼는 데 비용 1이 들고, 그 상태에서 1에 도착하는데 비용 go(5)가 들기 때문에 비용은 go(5)+1
2. 2로 나눈다. 비용은 go(3)+1
3. 3으로 나눈다. 비용은 go(2)+1
여기서 go를 다시 시뮬레이션하지 말고, 미리 알고 있다고 가정한 뒤 값을 대입하면 편합니다.
justking 6년 전
안녕하세요 이제 dp공부를 시작했는데요 문제하나씩 풀고있는데 이문제는 구글의 수많은 코드들이 이해가안되네요
원래 이런 코드를보면 작은 수(5)정도 넣고 머릿속으로 돌려보는데 어떻게 돌아가는지가 이해가안되네요
예를들어서
n=6일때 돌려보면
d[6] = go(5) + 1; //여기서 g(4)로 다시 돌아가잖아요 쭉쭉쭊쭊 n =1 이 될때까지.. 여기부터 머리아픕니다.
n을 2로 나누고
temp = go(3) + 1;
d[6] = go(3) + 1;
n을 3으로 나누고
d[6] = go(2) + 1;
이런식으로 생각되는데 d[n] 가 g(n식)+1이랑 어떻게 비교(d[n]>temp)를 해야되는지도 이해가 안됩니다...
바텁업도 봤는데 똑같이 둘다 이해가안되요 시뮬레이션이 안돌아갑니다..이런건 어떤식으로 생각을 해야되나요ㅠ