알고리즘 문제풀이/Greedy

백준 16953 파이썬(그리디)

Aytekin 2022. 2. 5. 14:49

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