[백준] 16928번: 뱀과 사다리 게임

6864 단어 baekjoonbaekjoon

간단한 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])

좋은 웹페이지 즐겨찾기