A에서 B를 만드는것이 아니라 반대로 B에서 A를 만드는 방향으로 생각해서 풀었다.
B를 10으로 나눈 값이 1 이거나 B가 2로 나누어떨어질때마다 카운트를 계속 해주고
B가 A보다 작거나 위의 조건을 만족시키지 못하는 수(한자리 홀수)가 나오면 카운트를 -1로 정의해주면 된다.
처음 풀 때 한자리 홀수를 생각하지 않고
단순히 b < a 인 경우만 생각해서 풀었더니
틀렸다ㅠㅠ
# 16953번: A -> B
a,b = map(int,input().split())
cnt = 1
while True:
if b == a:
break
elif (b%2 != 0 and b % 10 != 1) or (b<a):
cnt = -1
break
else:
if b % 10 == 1:
b //= 10
cnt += 1
else:
b //= 2
cnt += 1
print(cnt)
728x90
'알고리즘 문제풀이 > Greedy' 카테고리의 다른 글
백준 1049 파이썬(그리디) (0) | 2022.02.08 |
---|---|
백준 2864 파이썬(그리디) (0) | 2022.02.07 |
백준 1744 파이썬(그리디) (0) | 2021.12.15 |
백준 1439 파이썬(그리디) (0) | 2021.12.15 |
백준 4796 파이썬 (그리디) (0) | 2021.12.15 |