문제는 다음과 같고, 코드는 아래와 같다.
a,b = input().split()
count = 1
while (int(b)>int(a)):
if b[-1]=="1":
b = b[0:-1]
count+=1
elif int(b)%2==0:
b = str(int(b)//2)
count+=1
else:
break
if a==b:
print(count)
else:
print(-1)
a,b를 입력을 받은 후,
a를 b로 변환시키는 것이 아니라
b를 a로 변환시킴으로서 문제를 해결해 나갔다.
따라서 가장 마지막에 1이 존재할 경우는 이를 제거하고,
2를 나눌 수 있다면 2로 나누는 과정 하나하나를 전부 연산 숫자로 생각하고
불가능할 경우 -1을 출력하도록 구현했다.
'코딩테스트 문제 풀이 > 그리디 알고리즘' 카테고리의 다른 글
백준 22864 파이썬 문제 풀이 (0) | 2024.05.06 |
---|---|
백준 10610 파이썬 문제 풀이 (0) | 2024.05.06 |