BAEKJOON/알고리즘

[BOJ] 16953번 : A -> B

말하는 알감자 2024. 1. 22. 03:02

🔒 문제

⌨ 입력

🖨 출력

📚 예제

예외

ex1) 1 131
-1

ex2) 1 1111
5

📌 풀이

문제를 찬찬히 보면 A -> B를 만든다기보다는 B -> A를 만드는 것이 쉽다.

그래서 규칙을 찾아보면,

[규칙]

  1. B의 일의 자리 수가 1이면, B에 B를 10으로 나눈 몫을 저장한다.
  2. B를 2로 나누었을 때 나머지가 0이면, B에 B를 2로 나눈 몫을 저장한다.

3. B를 2로 나누었을 때 나머지가 0이 아니면, ans에 -1을 저장하고 ans를 출력한다.

while문을 탈출하는 방법은 3개이다.

3번 조건을 생각안해서 틀렸었다

[while문 탈출]

  1. A와 B가 같아졌을 때
  2. B가 A보다 작아졌을 때
  3. 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