백준 16928번: 뱀과 사다리 게임 #Python

ColorlessDia·2025년 8월 1일

algorithm/baekjoon

목록 보기
621/812
import sys
from collections import deque

def BFS():
    queue = deque([(1, 0)])
    visited = [False] * (100 + 1)
    visited[1] = True

    while queue:
        current_number, count = queue.popleft()

        if current_number == 100:
            return count

        for i in range(1, 6 + 1):
            next_number = current_number + i

            if 100 < next_number:
                continue

            if next_number in ladder_dict:
                next_number = ladder_dict[next_number]
            elif next_number in snake_dict:
                next_number = snake_dict[next_number]

            if visited[next_number]:
                continue
            
            queue.append((next_number, count + 1))
            visited[next_number] = True
    
    return 0

input = sys.stdin.readline

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

ladder_dict = dict()
snake_dict = dict()

for _ in range(N):
    x, y = map(int, input().split())

    ladder_dict[x] = y

for _ in range(M):
    u, v = map(int, input().split())

    snake_dict[u] = v

print(BFS())

0개의 댓글