반응형
문제
정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.
- 2를 곱한다.
- 1을 수의 가장 오른쪽에 추가한다.
A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.
입력
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
출력
A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.
풀이
a, b = map(int,input().split())
cnt = 1
while a != b:
cnt += 1
if a == b:
break
tmp = b
if b % 10 == 1:
b //= 10
elif b % 2 == 0:
b //= 2
if tmp == b:
cnt = -1
break
print(cnt)
반응형
'Develop > 알고리즘' 카테고리의 다른 글
[백준/Python] Silver II #1182 부분수열의 합 (0) | 2023.05.22 |
---|---|
[백준/Python] Silver II #4948 베르트랑 공준 (0) | 2023.05.21 |
[백준/Python] Bronze I #11653 소인수분해 (0) | 2023.05.21 |
[백준/Python] Silver II #4963 섬의 개수 (0) | 2023.05.20 |
[백준/Python] Bronze V #27331 2 桁の整数 (Two-digit Integer) (0) | 2023.05.20 |
Comment