접근 방법 : BFS
코드를 다 짜 놓고 바보같이 방문 처리를 제대로 못해서 시간초과 계속 발생.
처음에 방문처리를 while문 안쪽 pop 하자마자 처리했는데 그렇게 하면 아래로 내려가는 상황, 위로 올라가는 상황의 방문 처리가 제대로 처리 되지 않음.
그래서 조건문 타자마자 처리로 수정.
while else문으로(덱이 비었을 때) 갈 수 없는 조건으로 처리.
# -*- coding: euc-kr -*-
import sys
from collections import deque
F, S, G, U, D = map(int, sys.stdin.readline().strip().split())
visited = [False] * (F + 1)
curr_list = deque([[S, 0]])
visited[S] = True
while curr_list:
curr, cnt = curr_list.popleft()
if curr == G:
print(cnt)
break
go_up = curr + U
go_down = curr - D
if go_up <= F and not visited[go_up]:
curr_list.append([go_up, cnt + 1])
visited[go_up] = True
if go_down > 0 and not visited[go_down]:
curr_list.append([go_down, cnt + 1])
visited[go_down] = True
else:
print("use the stairs")