import sys
from collections import deque
input = sys.stdin.readline
Max = 100001
n, m = map(int, input().split())
dq = deque()
dq.append(n)
dis = [-1 for _ in range(Max)]
dis[n] = 0
res = 0
if n == m:
res = 1
while dq:
a = dq.popleft()
if a * 2 < Max:
if dis[a * 2] == -1:
dq.append(a * 2)
dis[a * 2] = dis[a] + 1
elif dis[a * 2] == dis[a] + 1:
dq.append(a * 2)
if a * 2 == m and dis[a] + 1 == dis[m]:
res += 1
if a + 1 < Max:
if dis[a + 1] == -1:
dq.append(a + 1)
dis[a + 1] = dis[a] + 1
elif dis[a + 1] == dis[a] + 1:
dq.append(a + 1)
if a + 1 == m and dis[a] + 1 == dis[m]:
res += 1
if a - 1 >= 0:
if dis[a - 1] == -1:
dq.append(a - 1)
dis[a - 1] = dis[a] + 1
elif dis[a - 1] == dis[a] + 1:
dq.append(a - 1)
if a - 1 == m and dis[a] + 1 == dis[m]:
res += 1
print(dis[m])
print(res)
- (예외처리) n == k 일 경우에는 res 0 , 1 이 출력되어야함
- 방문처리 , EX) 10이란 숫자에 방문횟수가 1번 이상일수도 있다.
예외처리만 잘 해주면
BFS만 하면 정답이 나오는 것 같다.