개발/algorithm
[백준 16953번] A -> B - python
zzi_on2
2022. 2. 24. 11:45
문제 링크
https://www.acmicpc.net/problem/16953
16953번: A → B
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
www.acmicpc.net
풀이
- bfs 문제
- 큐에 숫자와 횟수 추가
2를 곱한 수가 b보다 크지 않으면 큐에 추가, 횟수 +1
1를 오른쪽에 추가한 수가 b보다 크지 않으면 큐에 추가, 횟수 + 1
- 큐에서 꺼낸 숫자가 b와 같으면 횟수 return
from collections import deque
def bfs(a):
q = deque()
q.append((a,1))
while q:
x, cnt = q.popleft()
if x == b:
return cnt
if x*2 <= b :
q.append((x*2, cnt + 1))
# 스트링으로 바꿔 오른쪽에 '1'을 추가한 후 다시 int로 바꿔줌
tmp = int(str(x) + '1')
if tmp <= b :
q.append((tmp,cnt+1))
return -1
a, b = map(int,input().split())
print(bfs(a))