-문제: https://www.acmicpc.net/problem/16953

 

-정답풀이:

a에서 b로 푸는 게 아니라, b에서 a로 풀어야하는 문제. 

2로 나뉘는 수와 나뉘지 않는 수로 경우를 나눴는데, 47퍼센트까지가서 계속 틀리는 거다. 

그래서 이전에 풀었던 풀이를 참고하니 끝자리 수가 2의 배수나 1이 아닌 3,5,7,9는 연산을 실행할 수 없으므로 

거기서 멈춰줘야 한다. 그래서 이 부분을 추가하니 정답이 떴다 

a,b=map(int,input().split())

count=0
while b>a:
    if b%2==0:
        b=b//2
        count+=1
    elif b%10 == 1:
        b-=1
        b=b//10
        count+=1
    else: #끝자리수가 3,5,7,9인 경우
        break
if b==a:
    print(count+1)
else:
    print(-1)

 

-47%에서 틀린 풀이 

a,b=map(int,input().split())

count=0
while b>a:
    if b%2==0:
        b=b//2
        count+=1
    else:
        b-=1
        b=b//10
        count+=1
if b==a:
    print(count+1)
else:
    print(-1)

+ Recent posts