import sys
from collections import deque
def solution(n, start, target, up, down):
cnt = 0
visited = [False] * (n+1)
delta = [up, -down]
q = deque([start])
while q:
for _ in range(len(q)):
cur = q.popleft()
if cur == target:
return cnt
for i in range(2):
new_floor = cur + delta[i]
if 0 < new_floor <= n and not visited[new_floor]:
visited[new_floor] = True
q.append(new_floor)
cnt += 1
return "use the stairs"
n, start, target, up, down = map(int, sys.stdin.readline().split())
print(solution(n, start, target, up, down))
실제 시험 상황에서 아무리 늦어도 30분 안엔 풀고 넘어가야 하는 문제이다.
이동할 수 있는 층들을 탐색할 노드로 생각하고
최소한의 이동으로 목표 층에 도달해야 되기 때문에
최단거리 문제 즉 BFS을 사용하여 문제를 해결해야 한다.