백준
16953번 A->B
판다꼬마
2022. 5. 1. 20:31
728x90
https://www.acmicpc.net/problem/16953
내 풀이
a, b=map(int,input().split())
result=1
while 1:
if (a==b):
break
elif (b%2 !=0 and b%10!=1) or (a>b):
result=-1
break
else:
if (b%10==1):
b=b//10
result+=1
else:
b=b//2
result+=1
print(result)
해결 방법
a ->b로 생각하는 하는 것이 아니라 뒤에서부터 앞으로 역으로 생각을 해서 풀면 그렇게 어렵지 않은 문제였다.
이 방법을 생각하지 못해 많이 시간이 들었다.
구글 풀이
a, b=map(int,input().split())
index=1
while a<b:
if b%2==0:
b=b//2
elif str(b)[-1]=='1':
b=int(str(b)[:-1])
else:
break
index+=1
if a==b:
print(index)
else:
print(-1)
처음에는 이런 방법으로 시도를 했었다.
b를 문자열로 변환 후 마지막 문자가 1이면 제일 뒷자리를 삭제하려는 방법을 사용하려고 했는데
내 맘대로 코드가 짜여지지 않아 위에 있는 코드대로 작성을 하였다.
느낀 점
str(b)[-1]은 제일 뒷자리를 지칭
b=int(str(b)[:-1])은 제일 뒷자리 삭제
728x90