코딩테스트/백준 (python)

백준 / 16953번 / A → B / python 파이썬

seulll 2024. 11. 25. 18:00

 

문제 : https://www.acmicpc.net/problem/16953

 

 

 

 

 


나의 풀이

import sys
from collections import deque

input = sys.stdin.readline

def solution(a, b):
    q = deque([(a, 1)])

    while q:
        n, cnt = q.popleft()
        if n == b:
            return cnt

        if n * 2 <= b:
            q.append((n * 2, cnt + 1))

        if n * 10 + 1 <= b:
            q.append((n * 10 + 1, cnt + 1))
    return -1

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

 

큐를 이용하여 풀 수 있는 문제이다. 가능한 연산을 수행한 값과 연산 횟수를 모두 큐에 저장하여 먼저 리턴되는 값을 답으로 연산의 최솟값을 구할 수 있다.