숨바꼭질보다 조금 쉬운 하위문제 느낌?
어차피 이동의 모든 가중치는 같으므로 따로 우선순위큐나 appendleft없이 차례로 탐색하면 된다.
어차피 먼저 도착하면 먼저 출력된다.
import sys
input = sys.stdin.readline
from collections import deque
def BFS(F,S,G,U,D):
dp_count = {i:float('inf') for i in range(1,F+1)}
dp_count[S] = 0
queue = deque()
queue.append(S)
while queue:
cur_stair = queue.popleft()
if cur_stair == G:
print(dp_count[G])
return
for next_stair in (cur_stair+U,cur_stair-D):
if 1<=next_stair<=F and dp_count[next_stair] > dp_count[cur_stair]+1:
dp_count[next_stair] = dp_count[cur_stair]+1
queue.append(next_stair)
if dp_count[G]==float('inf'):
print('use the stairs')
F,S,G,U,D = map(int,input().split())
BFS(F,S,G,U,D)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 11657 타임머신 (0) | 2021.07.24 |
---|---|
[백준][Python] 2629 양팔저울 (0) | 2021.07.22 |
[백준][Python] 11725 트리의 부모찾기. (0) | 2021.07.22 |
[백준][Python] 11723 집합 (0) | 2021.07.21 |
[백준][Python] 2263 트리의 순회 (0) | 2021.07.21 |