알고리즘/백준

[백준] 16953. A -> B

빙빙 2021. 3. 27. 14:11

풀이

1. 무한루프 안에서 B가 짝수이면 B를 2로 나눈다. 동시에 cnt++

2. B를 10으로 나눴을 때 나머지가 1이라면 10으로 나눠준다. 동시에 cnt++

3. 만약 A == B이라면 cnt+1해주고 break걸어 cnt 출력

4. A > B라면 B는 연산을 통해 A가 될 수 없으므로 cnt = -1 후 break, cnt 출력

5. 위의 조건문이 충족하지 않으면 else를 줘서 cnt = -1값으로주고 break하게 했다.

 

이 문제는 처음에 보고 쉽다고 풀었는데 계속 틀렸다고 떠서 너무 짜증이 났다.

맞는데 계속 안돼서 알아낸 것이 else문을 줘야한다는 점이다!


A, B = map(int, input().split())
cnt = 0

while True:
    if A == B:
        cnt += 1
        break
    elif A > B:
        cnt = -1
        break
    if B % 2 == 0:
        B = B//2
        cnt += 1
    elif B % 10 == 1:
        B = B//10
        cnt += 1
    else:
        cnt = -1
        break

print(cnt)