새소식

인기 검색어

카테고리 없음

백준 16953문제

  • -

import heapq

a, b = map(int, input().split())

q = []
heapq.heapify(q)
# 초기 숫자와 필요한 연산갯수
heapq.heappush(q, (a, 1))
rs = -1
while q:
    x, cnt = heapq.heappop(q)
    # 2를 곱한 수와 1을 수의가장 오른쪽에 추가한 수를 구한다.
    y = x * 2
    z = int(str(x) + str(1))

    # 바꾸려는 수가 나온다면 답을 갱신하고 while문을 멈춘다.
    if y == b or z == b:
        rs = cnt + 1
        break

    # 바꾸려는 수보다 작을 때만 추가해준다.
    if y <= b:
        q.append((y, cnt + 1))
    if z <= b:
        q.append((z, cnt + 1))
print(rs)

출처 : https://www.acmicpc.net/problem/16953

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.