ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BaekJoon[16953]
    코딩/백준 그리디 문제 2023. 2. 17. 12:06

    이문제의 핵심은 A를 B로 만드는것이아닌 B를 A로 만드는것이다.

    단순히 B가 A가 되기위해서는 맨마지막 숫자1을 빼는게 가장 빠를것이다.

    하지만 이는 B 의 맨마지막 숫자가 1일경우에만 가능한 일이고 2를 나누는 경우에는

    2로 나우어떨어져야한다. 이는 반복문을 통해 B가A가 될때까지 이루어지고 만약 맨마지막 숫자가 1이 아니고 2로도 나누어 떨어지지 않는다면 이때 -1을 출력 또한 B가 A보다 작을때도 마찬지로 -1을 출력하면된다.

    import sys
    input=sys.stdin.readline
    def calculator(n,m,c):
        while m>=n:
    
            if m==n:
                print(c)
                return None
            if m%10==1:
                m//=10
            elif m%2==0:
                m//=2
            else:
                print(-1)
                return None
            c += 1
        print(-1)
    if __name__=="__main__":
        c=1
        n,m=map(int,input().split())
        calculator(n,m,c)
    

    '코딩 > 백준 그리디 문제' 카테고리의 다른 글

    BaekJoon[4796]  (0) 2023.02.17
    BaekJoon[2437]  (0) 2023.02.17
    BaekJoon[1449]  (0) 2023.02.17
    BaekJoon[1789]  (0) 2023.02.17
    BaekJoon[1339]  (0) 2023.02.17
Designed by Tistory.