백준 12851번: 숨바꼭질 2 #Python

ColorlessDia·2025년 8월 2일

algorithm/baekjoon

목록 보기
622/809
from collections import deque

def BFS(n, k):
    queue = deque([n])
    dist = [-1] * (200000 + 1)
    count = [0] * (200000 + 1)

    dist[n] = 0
    count[n] = 1

    while queue:
        x = queue.popleft()

        for X in [x * 2, x + 1, x - 1]:

            if not (0 <= X <= 200000):
                continue

            if dist[X] == -1:
                dist[X] = dist[x] + 1
                count[X] = count[x]

                queue.append(X)
                continue

            if dist[X] == dist[x] + 1:
                count[X] += count[x]
    
    return dist[k], count[k]

N, K = map(int, input().split())

T, C = BFS(N, K)

print(T)
print(C)

0개의 댓글