Coding Test/baekjoon

[백준 16953] A → B - python (solved.ac - 실버 1)

조용장 2022. 3. 24. 23:48

 

https://www.acmicpc.net/problem/16953

 

16953번: A → B

첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.

www.acmicpc.net

풀이

문제를 보았을때 알수있는 힌트

문제를 보고 'B의 값을 2로 나누고 첫번째 수가 1인 경우를 한칸 줄인다고 되겠다'라고 생각했다. 문제의 조건을 거꾸로 하면 되지 않을까 생각을 했다.

또한 조건으로 0이 아닌때까지만 반복 시키면 되지 않을까 싶었다.

그것의 결과를 리스트에 담고 리스트 안에 A가 있는지 확인하는 코드를 작성하였다.

 

import sys

input = sys.stdin.readline

a,b = list(map(int,input().split()))

result=[b]

while True:
    if result[-1]%2==0 and result[-1]!=0:
        result.append(result[-1]//2)
    elif result[-1]%10==1:
        result.append(result[-1]//10)
    else:
        break
if result.count(a):
    print(result.index(a)+1)
else:
    print(-1)

https://github.com/dydwkd486/coding_test/blob/main/baekjoon/baekjoon16953.py

 

GitHub - dydwkd486/coding_test: 코딩테스트 공부한 내용 정리

코딩테스트 공부한 내용 정리. Contribute to dydwkd486/coding_test development by creating an account on GitHub.

github.com