백준/Greedy
[그리디/백준] 16953번: A -> B
ydin
2022. 7. 1. 13:19
-문제: https://www.acmicpc.net/problem/16953
-정답풀이:
a에서 b로 푸는 게 아니라, b에서 a로 풀어야하는 문제.
2로 나뉘는 수와 나뉘지 않는 수로 경우를 나눴는데, 47퍼센트까지가서 계속 틀리는 거다.
그래서 이전에 풀었던 풀이를 참고하니 끝자리 수가 2의 배수나 1이 아닌 3,5,7,9는 연산을 실행할 수 없으므로
거기서 멈춰줘야 한다. 그래서 이 부분을 추가하니 정답이 떴다
a,b=map(int,input().split())
count=0
while b>a:
if b%2==0:
b=b//2
count+=1
elif b%10 == 1:
b-=1
b=b//10
count+=1
else: #끝자리수가 3,5,7,9인 경우
break
if b==a:
print(count+1)
else:
print(-1)
-47%에서 틀린 풀이
a,b=map(int,input().split())
count=0
while b>a:
if b%2==0:
b=b//2
count+=1
else:
b-=1
b=b//10
count+=1
if b==a:
print(count+1)
else:
print(-1)