https://www.acmicpc.net/problem/16928
# 2023.01.17
import sys
input = sys.stdin.readline
from collections import deque
n, m = map(int, input().split()) # 사다리, 뱀
graph=[i for i in range(101)] # 0~100까지 게임판
for i in range(n+m):
a, b = map(int, input().split()) # a->b이동
graph[a]=b
visited=[0]*(101) # 방문 여부 & 주사위를 던진 횟수
def bfs(start):
queue=deque([start]) # 시작점: 1
while queue:
current=queue.popleft()
for i in range(1, 7): # 주사위 던지기
total=current+i # (사다리로 이동한 값 or 뱀으로 이동한 값 or 현재 위치)+(주사위 값)
if total>100:
continue
next=graph[total] # (사다리로 이동한 값 or 뱀으로 이동한 값 or 현재 위치)
if not visited[next]:
queue.append(next)
visited[next]=visited[current]+1
if next==100:
return
bfs(1)
print(visited[100])
'Problem Solving > BOJ' 카테고리의 다른 글
[DFS] 1987 알파벳 (0) | 2023.01.18 |
---|---|
[Combination] 16938 캠프 준비 (0) | 2023.01.18 |
[Dict] 2143 두 배열의 합 (0) | 2023.01.15 |
[MST] 1197 최소 스패닝 트리 (0) | 2023.01.15 |
[Dijkstra] 1916 최소비용 구하기 (0) | 2023.01.12 |