백준 16953 A->B

highway92·2021년 10월 13일
0

백준

목록 보기
25/27

문제출처 : https://www.acmicpc.net/problem/16953

풀이과정

1. target이 홀수 일때와 짝수 일때로 나누었다.

1-1 짝수일 경우 target/2를 한다.
1-2 홀수일 경우 일의 자리가 1이 아닌경우 만들수 없는 수 이므로 return -1
1-3 그 이외의 경우에는 일의 자리를 떼고 다시 처음의 과정을 수행한다.

2. while 문이 break 되는 조건을 다음과 같다.

2-1 start가 target과 같아진 경우 return cnt
2-2 start가 target보다 커져서 만들수 없는 경우 return -1

import sys

input = sys.stdin.readline

start,target = map(int,input().split())

cnt = 1

while True:
    if start == target:
        break
    elif start > target or (target % 2 !=0 and target % 10 != 1):
        cnt = -1
        break
    elif target % 2 == 0:
        target = int(target/2)
        cnt += 1
    else:
        target = target // 10
        cnt += 1

print(cnt)
profile
웹 개발자로 활동하고 있습니다.

0개의 댓글