import sys
sys.setrecursionlimit(10000)
a,b=map(int,input().split())
ans=0
def pan(ans,a,b):
while 1:
if b %2 ==0:
b//=2
ans+=1
else:
b=str(b)
if b[-1] == '1':
b=int(b[:-1])
ans+=1
else:
return -1
if b <a:
return -1
elif b==a:
return ans+1
else:
continue
print(pan(ans,a,b))
보통 이런 문제는 b에서 a로 가는 게 더 쉽다.
만약 b가 2로 나눠지는 애라면 1회 사용했다고 표시하고 b를 나눠준다. 그게 아니라면 b의 끝자리가 1인지 확인하고, 맞으면 1을 빼주고 또 횟수 차감해준다. 둘다 아니면 안되는 경우다. -1을 리턴하고 끝낸다. if문을 잘 거치고 나왔을 때 아직 b가 a까지 도달하지 못했다면 계속해준다. 동일하다면 그대로 끝낸다. b가 더 작다면 어떻게 해서도 만들 수 없다. -1을 리턴하고 끝낸다.
'Koala - 19기 > 코딩테스트 심화 스터디' 카테고리의 다른 글
| [백준 / python] 7662 : 이중 우선순위 큐 (0) | 2025.09.21 |
|---|---|
| [BOJ/C++] 2493번: 탑 (0) | 2025.08.17 |
| [백준/Python] 2178 : 미로 탐색 (0) | 2025.08.17 |
| [백준/Python] #14496 그대, 그머가 되어 (0) | 2025.08.17 |
| [백준/Python] #2823 유턴싫어 (0) | 2025.08.10 |