0에서 출발하는 게 아니라 도착지에서 거꾸로 간다고 가정하면 문제를 풀기 쉽다. n에 도착하기 위해서는 점프가 아니라 순간 이동을 택해야 하며, 따라서 n 이전에 n//2에 위치해 있어야 한다. 짝수인 경우 곧바로 (뛰로) 순간 이동한다고 가정하자. 홀수인 경우에는 1만큼 뒤로 점프한다고 가정하고 짝수와 마찬가지로 순간 이동한다.
def solution(n):
total = 0
while n:
if n % 2 == 0:
n = n//2
else:
n -= 1
total += 1
return total