백준 16953(Python) 풀이 : A->B



백준 16953 문제

백준 16953



백준 16953 링크

백준 16953 풀이

나는 아직 BFS나 DFS를 배우지 않았기에 그냥 단순한 방법으로 풀었다. A->B를 거슬러 올라가는 것이 아니라, B->A로 반대로 생각한 것이다.

만약 A->B로 만들 수 있는 숫자라면, B는 2로 나눠지거나(나머지 0), 끝자리가 1이어야 한다. 만약 2로 나눈 나머지가 0이 아니거나, 혹은 계속 나눴더니 B가 A보다 작아진다면 -1을 출력하면 된다.

#16953

# sys 연습
import sys

# 입력
A, B = sys.stdin.readline().split()

# B를 반복 돌리기
cnt = 1
while True:
    if int(A)>int(B):
        print(-1)
        break
    elif int(A) == int(B):
        print(cnt)
        break
    elif str(B)[-1]== '1':
        B = str(B)[:-1]
        cnt+=1
    elif int(B)%2==0:
        B = int(int(B)/2)
        cnt+=1
    else: # 끝자리가 3,5,7,9 뭐 이렇게 끝나서 2로 나눈 나머지가 0이 아닌 경우
        print(-1)
        break



CATEGORIES:

Tags:

No Responses

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다