-문제 :https://www.acmicpc.net/problem/16953
16953번: A → B
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
www.acmicpc.net
-정답풀이:
a,b=map(int,input().split())
ans=1
while True:
if b==a:
break
elif (b%2 !=0 and b%10 !=1) or b<a:
ans=-1
break
else:
if b%2==0:
b//=2
ans+=1
elif b%10==1:
b=(b-1)//10
ans+=1
print(ans)
-틀린풀이:
- 시간초과가 났던 문제.
- 그래서 -1이 출력되는 경우를 while문 초반에 넣으면 시간초과가 해결될 것이라고 생각했다.
- 3번-9번 라인을 추가했다.
- a와 b가 같은 수 일때도 생각하고
- -1이 출력되는 경우를 생각해야하는데 b의 끝자리 수가 1이 아니고 b가 2의 배수가 되면 안되거나 b가 a보다 작은 경우 -1이 출력된다.
'백준 > Greedy' 카테고리의 다른 글
[코딩테스트] 백준 2864번: 5와 6의 차이 (0) | 2022.01.26 |
---|---|
[코딩테스트] 백준 1049번: 기타줄 (0) | 2022.01.26 |
[코딩테스트] 백준 1202번: 보석 도둑 (0) | 2022.01.25 |
[코딩테스트] 백준 1439번: 뒤집기 (0) | 2022.01.23 |
[코딩테스트] 백준 4796번: 캠핑 (0) | 2022.01.23 |