📌문제
🎖️난이도
✔️풀이
a, b = map(int, input().split())
cnt = 0
while True:
if b == a:
print(cnt + 1)
break
elif b < a or (b%10 != 1 and b%10 != 2 and b%2 != 0):
print(-1)
break
elif b%10 == 1:
b //= 10
elif b%10 == 2 or b%2 == 0:
b /= 2
cnt += 1
🧠노트
거꾸로 생각해서
B가 A가 될 때까지 2로 나누거나 맨 뒤에 1을 떼내어 주면 된다.
그러다가 안되는 상황이 발생하면 -1을 출력해주면 되고,
B == A가 되는 상황이면 연산 횟수(cnt) + 1을 출력해주면 된다.
🔍참고
-
'[ 알고리즘 ] > Greedy' 카테고리의 다른 글
[백준] 1946. 신입 사원 (0) | 2022.09.01 |
---|---|
[백준] 21758. 꿀 따기 (0) | 2022.08.17 |
[백준] 1541. 잃어버린 괄호 (0) | 2022.06.30 |
[백준] 11399. ATM (0) | 2022.06.30 |
[프로그래머스] 단속카메라 (0) | 2022.06.29 |