개발하지연
[백준 16953번] A -> B (python) 본문
문제
정수 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를 만들 때까지 반복한다.
'알고리즘' 카테고리의 다른 글
[백준 21314번] 민겸 수 (python) (0) | 2021.07.16 |
---|---|
[백준 19598번] 최소 회의실 개수 (python) (0) | 2021.07.16 |
[백준 20365번] 블로그2 (python) (0) | 2021.07.14 |
[백준 1541번] 잃어버린 괄호 (python) (0) | 2021.07.14 |
[백준 1931번] 회의실 배정 (python) (0) | 2021.07.14 |
Comments