Files
Algorithm/백준/1697.py
2026-04-11 11:47:49 +09:00

30 lines
809 B
Python

from collections import deque
n, K = map(int, input().split())
max_val = 100001 # 문제 범위: 0 ≤ 위치 ≤ 100000
# 각 위치에 도달하는 최소 시간 (방문하지 않은 경우 -1)
dist = [-1] * max_val
# 각 위치에 도달하는 방법의 수
ways = [0] * max_val
q = deque([n])
dist[n] = 0
ways[n] = 1
while q:
cur = q.popleft()
for next in (cur - 1, cur + 1, cur * 2):
if 0 <= next < max_val:
# 아직 방문하지 않은 경우
if dist[next] == -1:
dist[next] = dist[cur] + 1
ways[next] = ways[cur]
q.append(next)
# 동일한 최소 시간으로 도달하는 경우
elif dist[next] == dist[cur] + 1:
ways[next] += ways[cur]
print(dist[K])
print(ways[K])