⦁ B가 2로 나눠지거나, 끝자리가 1일때로 분류하기
⦁ A가 B랑 같나?
⦁ B가 2로 나눠지나?
⦁ B의 끝자리가 1로 나누어 떨어지나?
⦁ A가 B보다 큰가?
A, B = map(int, input().split())
cnt = 1
while B != A:
if (B > A):
if (B % 2 == 0):
B //= 2
elif (B % 10 == 1):
num = str(B)
num = num[:-1] #[:-1] - 문자열에서 끝글자 자르기
B = int(num)
else:
cnt = -1
break
cnt += 1
if (B < A):
cnt = -1
break
print(cnt)
끝자리 1을 없앤 방법은
정수를 문자열로 변환한뒤 [:-1]을 써서 끝자리(__1)를 자른 뒤, 다시 문자열을 정수로 바꾸었다.
쓰면서 너무 찝찝했다.😑
그래서 다르게 없애보는 방법을 생각했다.
import sys
sys.setrecursionlimit(10 ** 7)
A, B = map(int, input().split())
cnt = 1
while B != A:
if (B > A):
if (B % 2 == 0):
B //= 2
elif (B % 10 == 1):
B //= 10
else:
cnt = -1
break
cnt += 1
if (B < A):
cnt = -1
break
print(cnt)
10으로 나눈 뒤 몫만 챙기는 것..!!!!!!
너무나 간단했다.
이렇게 했더니 코드길이가 확 짧아졌다.