https://www.acmicpc.net/problem/5014
import sys
from collections import deque
input = sys.stdin.readline
# f: 총 층수, s: 현재 위치, g: 목적지, u: 위로 u층 감, d: 아래로 d층 감
f, s, g, u, d = map(int, input().split())
visited = [False] * (f+1)
cnt = [0] * (f+1)
que = deque()
que.append(s)
visited[s] = True
flag = False
while que:
v = que.popleft()
if v == g:
flag = True
break
for i in (v+u, v-d):
if 0 < i <= f and not visited[i]:
visited[i] = True
cnt[i] = cnt[v] + 1
que.append(i)
if flag:
print(cnt[g])
else:
print("use the stairs")
BFS 탐색을 이용해 문제를 풀었다.
이동이 불가능한 경우를 알고자 flag를 이용해서 판별했다.