BAEKJOON/알고리즘
[BOJ] 16953번 : A -> B
말하는 알감자
2024. 1. 22. 03:02
🔒 문제
⌨ 입력
🖨 출력
📚 예제
예외
ex1) 1 131
-1
ex2) 1 1111
5
📌 풀이
문제를 찬찬히 보면 A -> B를 만든다기보다는 B -> A를 만드는 것이 쉽다.
그래서 규칙을 찾아보면,
[규칙]
- B의 일의 자리 수가 1이면, B에 B를 10으로 나눈 몫을 저장한다.
- B를 2로 나누었을 때 나머지가 0이면, B에 B를 2로 나눈 몫을 저장한다.
3. B를 2로 나누었을 때 나머지가 0이 아니면, ans에 -1을 저장하고 ans를 출력한다.
while문을 탈출하는 방법은 3개이다.
3번 조건을 생각안해서 틀렸었다
[while문 탈출]
- A와 B가 같아졌을 때
- B가 A보다 작아졌을 때
- A로 B를 만들 수 없을 때
2번, 3번은 답이 -1이다.
🔑 python 코드
# A -> B
import sys
input = sys.stdin.readline
A, B = map(int, input().split())
ans = 1
while(A != B):
if(B < A):
ans = -1
break
if(B % 10 == 1):
B = B // 10
elif(B % 2 == 0):
B = B // 2
else:
ans = -1
break
ans += 1
print(ans)