본문 바로가기
알고리즘/그리디

[백준][Python] 16953번 A → B

by 임짠짠 2022. 4. 7.
반응형
 

16953번: A → B

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

www.acmicpc.net

 

코드 

a, b = map(int,input().split())
cnt = 0
err = 0
while a!=b:
    if a>b:
        err = 1
        break
    if b % 2 == 0:
        b //=2
        cnt+=1
    elif b % 10 == 1:
        b //= 10
        cnt+=1
    else:
        err = 1
        break

if err == 1:
    print(-1)
else:
    print(cnt+1)

 

설명

목표 수부터 거꾸로 거슬러 올라가서 만약 목표 수가 짝수이면 2로 나눠준 뒤 cnt를 증가시키고, 1의 자리수가 1이면 10으로 나눠주고 cnt를 증가시켰다.

만약 이 둘 중에 어디에도 속하지 않으면 이것은 그 수를 만들 수 없는 것을 의미하기 때문에 err값을 1로 바꾸고 while문을 빠져나간다.

b가 만약에 a 보다 작아지는 경우가 생겨도 이 경우는 그 수를 만들 수 없는 것이므로 위와 같이 err값을 1로 바꾸고 while문을 빠져나간다.

구한 cnt 값에 1을 더해줘서 출력해야 된다.

반응형

댓글