알고리즘/백준
[백준] 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)