간단한 BFS 응용문제였으나 처음 제출한 답안을 틀렸다.
뱀 또는 사다리를 만나면 무조건 도착점으로 이동해야 하는데, 만난 지점에서 주사위를 굴리는 경우를 고려한 것이 잘못됐던 것이다.
문제의 조건을 주의 깊게 보지 않아서 일어난 실수였다. 조금 더 생각해 보는 습관을 길러야겠다.
import sys
from collections import deque
input = sys.stdin.readline
N, M = map(int, input().split())
matrix = [0] * 101
portal = [0] * 101
for _ in range(N):
a, b = map(int, input().split())
portal[a] = b
for _ in range(M):
a, b = map(int, input().split())
portal[a] = b
def bfs():
q = deque([1])
while q:
v = q.popleft()
# 뱀 또는 사다리가 있는 경우
if portal[v] != 0:
q.append(portal[v])
matrix[portal[v]] = matrix[v] # 방문 및 count 처리
else:
for i in range(1, 7): # 주사위 굴리기
if v + i <= 100 and matrix[v + i] == 0:
q.append(v + i)
matrix[v + i] = matrix[v] + 1
bfs()
print(matrix[100])