KEEP GOING
백준 2839번: A -> B (구현) 본문
반응형
https://www.acmicpc.net/problem/16953
문제
정수 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
반응형
'code review > implementation' 카테고리의 다른 글
[python] 백준 19237번: 어른 상어 (0) | 2022.01.25 |
---|---|
[python] 백준 15686번 : 치킨배달 (combinations, 선형탐색) (0) | 2022.01.11 |
[python] 프로그래머스 60057번 : 문자열 압축 (slicing) (0) | 2022.01.07 |
[python] 음수 피보나치 수열 (구현) (0) | 2021.12.03 |
백준 4396번 : 지뢰 찾기 (0) | 2021.11.08 |
Comments