처음에 살짝 어렵게 접근하려고 했는데, 생각해보니 1차원 BFS이니까 숨바꼭질 문제랑 비슷할거라 생각했다.
근데 이거 BFS문제인거 모르고 풀었으면 좀 고생했을거 같음...
import sys
from collections import deque
input = sys.stdin.readline
f, s, g, u , d = map(int, input().split())
visited = [0] * (f+1)
def bfs():
queue = deque()
queue.append(s)
visited[s] = 1
while queue:
x = queue.popleft()
if x == g:
break
for i in (x+u, x-d):
if 0 < i <= f and visited[i] == 0:
queue.append(i)
visited[i] = visited[x] + 1
bfs()
# 지금 있는 층이 도착해야하는 층이면 엘베 0번
if s == g:
print(0)
else:
if visited[g] == 0: # g층에 가지 않았으면
print('use the stairs')
else:
print(visited[g]-1) # 1층 부터 시작해서 -1 해줘야함
사실 bfs 함수 안에서 i의 범위에 대해 생각을 했는데 문제에 f층 건물이라 해서 f층을 넘어가면 안되는거였다! 문제를 잘 읽어야하는 이유... 사서 고생함