문제출처: https://www.acmicpc.net/problem/16953
1. 문제 접근 방식
B에서 A로 만들 생각을 했다. 그리디 문제처럼 풀어보려고 했고 m의 마지막 숫자가 1이면 1을 삭제하고 아니면 2로 나누는 방법을 사용했다.
2. 내가 푼 코드
import sys
n, m = map(int,sys.stdin.readline().split())
count=1
while True:
if m == n:
print(count)
break
if ( m % 2 != 0 and m %10 != 1) or m < n:
print(-1)
break
if m % 10 == 1:
m=m//10
count+=1
else:
m=m//2
count+=1
3. 결과 및 느낀점
숫자를 나누거나 곱하거나 하는 문제는 문자열로 풀지말고 숫자로 풀자. 처음에 문자열로 풀어서 실수했다...
그리고 조건을 항상 모두 추가하자.
달랑 m<n만 했다가 여러번 틀렸었다.