-문제: 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)
'백준 > Greedy' 카테고리의 다른 글
[그리디/백준] 1080번: 행렬 (0) | 2022.07.04 |
---|---|
[그리디/백준] 1049번: 기타줄 (0) | 2022.07.04 |
[그리디/백준] 1202번: 보석 도둑 (0) | 2022.07.01 |
[그리디/백준] 1439번: 뒤집기 (0) | 2022.07.01 |
[그리디/백준] 1339번 : 단어 수학 (0) | 2022.06.29 |