-문제 :https://www.acmicpc.net/problem/16953

 

16953번: A → B

첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.

www.acmicpc.net

 

-정답풀이: 

a,b=map(int,input().split())

ans=1
while True:
    if b==a:
        break
    elif (b%2 !=0 and b%10 !=1) or b<a:
        ans=-1
        break
    else:
        if b%2==0:
            b//=2
            ans+=1
        elif b%10==1:
            b=(b-1)//10
            ans+=1

print(ans)

-틀린풀이: 

  • 시간초과가 났던 문제. 
  • 그래서 -1이 출력되는 경우를 while문 초반에 넣으면 시간초과가 해결될 것이라고 생각했다. 
  • 3번-9번 라인을 추가했다.
  • a와 b가 같은 수 일때도 생각하고
  • -1이 출력되는 경우를 생각해야하는데 b의 끝자리 수가 1이 아니고 b가 2의 배수가 되면 안되거나 b가 a보다 작은 경우 -1이 출력된다.

+ Recent posts