백준 문제 링크
A -> B
❓ 접근법
- 정수 A와 B가 다를 때
- 정수 A가 B보다 크면 break.
- 정수 B 끝자리가 1이면 B에서 1을 빼고 10으로 나누자.
- 정수 B가 짝수이면 B를 2로 나누자.
- 정수 B가 2,3,4 조건을 만족하지 못할 때도 break.
- cnt+1 반환
👌🏻 코드
x,y = map(int, input().split(" "))
cnt = 0
while x != y:
if x > y:
cnt = -2
break
elif str(y)[-1] == '1':
y -= 1
y = y
cnt += 1
elif y % 2 == 0:
y = y
cnt += 1
else:
cnt = -2
break
print(cnt + 1)
# cnt를 -2로 설정해 준 이유는 정상적인 예제의 경우 최솟값에 +1을 더하고,
그렇지 않은 예제의 경우 -1을 출력해야 해서 cnt를 -2로 설정하고
cnt+1을 출력하기 위함이다.
❌ 틀린 코드
x,y = input().split(" ")
x = int(x)
y = list(str(y))
count = 0
z = int(''.join(y))
while True:
if z % 2 == 0:
if z == x:
count += 1
break
else:
z = int(z / 2)
y = list(str(z))
count += 1
elif z % 2 == 1:
y = list(str(z))[:-1]
if len(y) != 0:
z = int(''.join(y))
count += 1
else:
count = -1
break
print(count)
# 처음 짰던 코드는 예시는 다 맞았지만 제출에서 틀렸다.ㅠㅠ