https://programmers.co.kr/learn/courses/30/lessons/12980#qna
def solution(n):
ans = 0
while n != 0:
if n % 2 == 0:
n /= 2
else:
n -= 1
ans += 1
return ans
print(solution(5000))
n
에서 부터 시작하여 0으로 도착하는 방식으로 접근했다.n/2
연산만 수행하고, 홀수일 한 칸 점프(n-1
) 하여 짝수로 맞춰준다. 이 때 건전지(ans+=1
) 한 개가 사용된다.# n = 5000
# 2500
# 1250
# 625
# 625 - 1 = 624 (ans += 1)
# 312
# 156
# 78
# 39
# 39 - 1 = 38 (ans += 1)
# 19
# 19 - 1 = 18 (ans += 1)
# 9
# 9 - 1 = 8 (ans += 1)
# 8
# 4
# 2
# 1
# 1 - 0 = 0 (ans += 1)
# 0 (while 탈출)