반응형
코드
a, b = map(int,input().split())
cnt = 0
err = 0
while a!=b:
if a>b:
err = 1
break
if b % 2 == 0:
b //=2
cnt+=1
elif b % 10 == 1:
b //= 10
cnt+=1
else:
err = 1
break
if err == 1:
print(-1)
else:
print(cnt+1)
설명
목표 수부터 거꾸로 거슬러 올라가서 만약 목표 수가 짝수이면 2로 나눠준 뒤 cnt를 증가시키고, 1의 자리수가 1이면 10으로 나눠주고 cnt를 증가시켰다.
만약 이 둘 중에 어디에도 속하지 않으면 이것은 그 수를 만들 수 없는 것을 의미하기 때문에 err값을 1로 바꾸고 while문을 빠져나간다.
b가 만약에 a 보다 작아지는 경우가 생겨도 이 경우는 그 수를 만들 수 없는 것이므로 위와 같이 err값을 1로 바꾸고 while문을 빠져나간다.
구한 cnt 값에 1을 더해줘서 출력해야 된다.
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준][Python] 21758번 꿀 따기 (0) | 2022.04.11 |
---|---|
[백준][Python] 21314번 민겸 수 (0) | 2022.04.08 |
[백준][Python] 20365번 블로그2 (0) | 2022.04.06 |
[백준][Python] 1541번 잃어버린 괄호 (0) | 2022.04.05 |
[백준][Python] 11047번 동전 0 (0) | 2022.04.01 |
댓글