반응형
최소접근 + 이동 문제시에는 대부분 bfs면 맞는거 같다
import sys
from collections import deque
input = sys.stdin.readline
que = deque()
stg = [0 for i in range(101)] #1차원 배열로 보드판 만들기
vst = [0 for i in range(101)] #최소 접근을 위해 중복 진입 금지
lad,snake = map(int,input().split())
for i in range(lad): #사다리 칸 추가
fst,scd = map(int,input().split())
stg[fst] = scd
for i in range(snake): #뱀 칸 추가
fst,scd = map(int,input().split())
stg[fst] = scd
que.append((1,0)) #첫칸부터 시작
vst[1] = 1
while que: #탐색
cur = que.popleft()
for i in range(1,7): #모든 주사위 경우의 수
x = cur[0]+i
if 1<=x<101 and not vst[x]:
if x==100: #목적지 도달시 주사위 굴린 횟수 출력 후 종료.
print(cur[1]+1)
exit(0)
elif stg[x]: #뱀,사다리 칸이라면 그 칸 이동
que.append((stg[x],cur[1]+1))
vst[stg[x]] = 1
else: #일반 칸이면 주사위 칸만큼 이동함
que.append((x,cur[1]+1))
vst[x] = 1반응형
'알고리즘 문제들 으악 > 백준' 카테고리의 다른 글
| [python]18111번 마인크래프트,인덱싱도 시간이 걸린다&1초는 1억번 (0) | 2022.12.31 |
|---|---|
| [python]🔥2206번 벽 부수고 이동하기 (0) | 2022.12.31 |
| [python]7569번 토마토, 7576번의 3차원 버전 (0) | 2022.12.29 |
| [python]7576번 토마토, 시작점이 여러 개인 BFS (0) | 2022.12.28 |
| [python]7562번 나이트의 이동 (0) | 2022.12.25 |