code review/implementation
백준 2839번: A -> B (구현)
jmHan
2021. 11. 21. 20:44
반응형
https://www.acmicpc.net/problem/16953
16953번: A → B
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
www.acmicpc.net
문제
정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.
- 2를 곱한다.
- 1을 수의 가장 오른쪽에 추가한다.
A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.
입력
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
출력
A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.
import sys
a,b = map(int, sys.stdin.readline().split())
cnt=0
while True:
if b%10==1:
b=b-1
b=b//10
cnt+=1
elif b%2==0:
b//=2
cnt+=1
# 두 조건을 모두 만족시키지 못할 경우
else:
print(-1)
break
# print(a,b)
if b==a:
print(cnt+1)
break
if b<a:
print(-1)
break
반응형