본문 바로가기

boj

백준 16928 뱀과 사다리 게임

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

처음에 멍청하게 배열을 만들어서 풀려했다 ㅋㅋㅋㅋ

 

간단한 dfs문제이다.

하필이면 kdt시간에 푸느라 엄청 안풀렸는데, 집에서푸니 10분컷이였다.

 

주의할 점은 단 하나이다.

뱀과 사다리는 무조건 타야 하므로

조건문을 제대로 설정해서, 타지 않은 경우를 큐에 넣지 않도록 주의하자

 

import sys
from collections import deque
input=sys.stdin.readline

def bfs(start=1):
    que=deque()
    que.append(start)
    arr[start]=0

    while que:
        now=que.popleft()
        
        for i in range(1,7):
            next=now+i
            if next==100:
                print(arr[now]+1)
                
                exit()
            

            elif next<=100 and arr[next]==-1:
                arr[next]=arr[now]+1
                if next in ladder :
                    if arr[ladder[next]]==-1:
                        arr[ladder[next]]=arr[next]
                        que.append(ladder[next])
                elif next in snake :
                    if arr[snake[next]]==-1:
                        arr[snake[next]]=arr[next]
                        que.append(snake[next])
                else:
                    que.append(next)


                




ladder={}
snake={}
arr=[-1 for _ in range(101)]
n,m=map(int,input().split())
for _ in range(n):
    a,b=map(int,input().split())
    ladder[a]=b
for _ in range(m):
    a,b=map(int,input().split())
    snake[a]=b

bfs(1)

'boj' 카테고리의 다른 글

백준10026적록색약  (0) 2022.05.18
백준1062 가르침  (0) 2022.05.18
백준 1987 알파벳  (0) 2022.05.15
백준 1339 단어 수학  (0) 2022.05.14
백준 15686치킨배달  (0) 2022.05.13