업데이트:

카테고리: ,

1. 문제

문제는 링크에 들어가면 있다.

2. 정답 코드

문제의 내 정답 코드는 다음과 같다.

import sys
read = sys.stdin.readline

A,B = map(int,read().split())

"""
2로 나눠지는지 보고
나눠지지 않으면 1을 빼보면된다.
이를 반복하는 느낌으로.
"""
count = 0
while A <= B :
    # 먼저 A와 B가 같을 경우 바로 끝내야.
    if A==B :
        print(count+1)
        break
    # 다를 경우 아래 로직 실행
    BB = str(B)
    # B가 2로 나눠지는가?
    if B % 2 == 0 :
        B = int(B/2)
        count += 1
    elif BB[-1] == "1":
        # 일의 자리의 수에 1을 뺄 수 있는가?
        BB = BB[:-1]
        B = int(BB)
        count += 1
    else :
        # 둘다 안된다면, 이제 더이상 루프를 진행하면 안된다.
        print(-1)
        break

    if A >B :
        print(-1)
        break




3. 풀이 및 생각


문제 풀이

문제를 보자마자 떠오른 생각은 만들어질 숫자를 역으로 처음의 수로 되돌리는 것이다. A에 2를 곱할지 1을 붙일지를 모르기 때문! 간단한 조건문을 활용해서 문제를 해결하자.


나의 생각

-

최대 1 분 소요