🔒 문제
⌨ 입력
🖨 출력
📚 예제
예외
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)
'BAEKJOON > 알고리즘' 카테고리의 다른 글
[BOJ] 1789번 : 수들의 합 (1) | 2024.01.29 |
---|---|
[BOJ] 1974번 : Z (0) | 2024.01.28 |
[BOJ] 1012번 : 유기농 배추 (1) | 2024.01.03 |
[BOJ] 2667번 : 단지 번호 붙이기 (1) | 2024.01.02 |
[BOJ] 11725번 : 트리의 부모 찾기 (1) | 2024.01.01 |