백준 python 기록

백준 파이썬 16928 뱀과 사다리 게임

작지 2021. 12. 20. 02:39

백준 링크 : https://www.acmicpc.net/problem/16928

 

16928번: 뱀과 사다리 게임

첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으

www.acmicpc.net

 

1부터 100까지 가는 수단중 가장 최솟값을 구하는 문제이다.

 

보통 최소값? 가는 경로??? 하면 다익스트라 OR BFS인데 여기선 BFS로 해도 괜찮을 거라고 판단 + 이게 더 쉬울거라고 생각해서 BFS로 풀이했다.

 

from collections import deque

s = [-1 for i in range(101)]

visited=[i for i in range(101)]

n,m = map(int,input().split())

for i in range(n):
    a,b=map(int,input().split())

    visited[a] = b

for i in range(m):
    a,b=map(int,input().split())

    visited[a] = b

queue = deque()
queue.append(1)

s[1] = 0

while queue:
    x = queue.popleft()

    for i in range(1,7):
        y = x+i
        if (y>100):
            continue
        y = visited[y]
        if (s[y] == -1 or s[y]>s[x]+1):
            s[y] = s[x]+1
            queue.append(y)

print(s[100])

-1로 방문하지 않음을 표시하는 s

visited 변수에 뱀과 사다리 변수를 집어 넣어서 점프할 거리를 재어준 후

계속해서 비교하면 되는 간단한 BFS문제