본문 바로가기
Problem Solving/BOJ

[BOJ] 16928 뱀과 사다리 게임

by Bokoo14 2023. 1. 18.

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

# 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