def solution(n, a, b):
cnt = 0
while a!=b:
a = a//2 + a%2
b = b//2 + b%2
cnt += 1
return cnt
각각의 수를 2로 나눴을 때의 몫, 나머지, 합을 구해보면 다음과 같은데
몫 | 나머지 | 합 | |
---|---|---|---|
1 | 0 | 1 | 1 |
2 | 1 | 0 | 1 |
3 | 1 | 1 | 2 |
4 | 2 | 0 | 2 |
5 | 2 | 1 | 3 |
6 | 3 | 0 | 3 |
7 | 3 | 1 | 4 |
8 | 4 | 0 | 4 |
이렇게 합이 같은 것 끼리 만난다는 것을 알 수 있다.
따라서 a와 b가 같아질 때까지 2로 나눈 몫과 나머지의 합을 구해보면 된다.