티스토리 뷰

bfs 특징
1. queue
2. visited 여부
3. 상하좌우 => 여기선 주사위(1~6)

from collections import deque

def bfs():
    q = deque([1])
    visited[1] = True
    while q:
        now = q.popleft()
        for i in range(1, 7):
            move = now + i
            if 0 < move <= 100 and not visited[move]:
                # 뱀과 사다리 만났을 때 최신화 
                if move in ladder.keys(): #key, value 
                    move = ladder[move]
                if move in snack.keys():
                    move = snack[move]
                
                if not visited[move]:
                    q.append(move)
                    visited[move] = True
                    board[move] = board[now] + 1
                    

N, M = map(int, input().split())
board = [0] * 101
visited = [False] * 101


ladder = dict()
snack = dict()

for _ in range(N):
    i, j = map(int, input().split())
    ladder[i] = j

for _ in range(M):
    i, j = map(int, input().split())
    snack[i] = j
    
bfs()
print(board[100])

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함