로딩
요청 처리 중입니다...

[백준 16953] A → B

 [백준 16953] A → B

https://www.acmicpc.net/problem/16953 문제이해 정수 A와 B가 주어졌을 때 A에 가능한 연산은 곱하기 2와 1을 가장 오른쪽에 추가하는 연산만 가능하다. 이 두 가지의 연산을 활용해 A를 B로 바꾸는데 필요한 연산의 최솟값을 구해라.

만들 수 없는 경우 -1 출력 풀이 BFS와 DFS로 풀 수 있을 것 같은데 BFS로 풀었다. 코드 from collections import deque A, B = map(int, input().split()) d = deque() d.append([A, 1]) while d: f, s = d.popleft() if f == B: print(s) exit() if f*2 <= B: d.append([f*2, s+1]) if f*10 + 1 <= B: d.append([f*10 + 1, s+1]) print(-1) 후기 문제가 쉽다고 생각해 만들 수 없는 경우에 대한 출력을 빼먹었었다....

# 16953 # 백준

원문 링크 : [백준 16953] A → B