💡문제접근

  • 이전 포스팅에 있었던 [[백준] 25418번 정수 a를 k로 만들기] 문제와 동일한 유형이다. 계산 방법을 이용해서 접근했는데 역방향 접근 방식을 선택했다.
  • 문제에서 주어진 연산 방식을 역방향 연산 방식을 적용하면 다음과 같이 바꿀 수 있다.
    ①. 연산1 : A에 2를 곱한다. → B에서 2를 나눈다.
    ②. 연산2 : 1을 수의 가장 오른쪽에 추가한다. → 마지막 자릿수의 숫자가 1이면 B를 10으로 나눈 몫으로 바꿔 주고 1이 아니라면 만들 수 없으므로 -1을 출력한다.

💡코드(메모리 : 30616KB, 시간 : 36ms)

import sys
input = sys.stdin.readline

A, B = map(int, input().strip().split())
cnt = 1
while True:
    if A == B:
        break

    if B < A*2:
        cnt = -1
        break
    if B % 2 == 0:
        B //= 2
        cnt += 1
    else:
        if B % 10 == 1:
            B //= 10
            cnt += 1
        else:
            cnt = -1
            break
print(cnt)

💡소요시간 : 10m

0개의 댓글