알고리즘
[백준 16953번] A -> B (python)
JeongJiyeon
2021. 7. 16. 16:37
문제
정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.
- 2를 곱한다.
- 1을 수의 가장 오른쪽에 추가한다.
A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.
기록
(greedy 6일차) B -> A로 거꾸로 만들어가는 과정을 구현했다.
코드
A, B = map(int, input().split())
count=0
while B>A:
count+=1
if B%10==1: B//=10
elif B%2==0 : B//=2
else : break
if A==B : print(count+1)
else : print(-1)
B를 A로 만드는 과정을 구현했다. 2로 나눠지는 경우는 2로 나누고, 마지막이 1인 경우는 1을 제거하는 과정을 A를 만들 때까지 반복한다.