https://www.acmicpc.net/problem/5014
from collections import deque
F, S, G, U, D = map(int, input().split())
visited = [False] * (10**6+1)
def bfs(s):
count = 0
q = deque()
q.append(s)
visited[s] = True
while q:
for _ in range(len(q)):
x = q.popleft()
if x == G:
return count
for i in (x+U,x-D):
if 1 <= i <= F:
if not visited[i]:
q.append(i)
visited[i] = True
count += 1
return 'use the stairs'
print(bfs(S))
https://velog.io/@mauserne/%EB%B0%B1%EC%A4%80-16954-%EB%AC%B8%EC%A0%9C-%EB%B6%84%EC%84%9D-python에서 얻은 아이디어로 금방 풀이가 떠올랐다.
while문 안의 for _ in range(len(q))로 버튼을 한번 누를때마다 이동할 수 있는 경우의 수를 모두 탐색하기를 반복할 수 있다
처음에 i 범위를 10**6 까지로 잘 못 생각해서 오답을 맞았다.
for i in (x+U,x-D):
if 1 <= i <= 10**6: #<<
if not visited[i]:
q.append(i)
visited[i] = True
입력
100 100 1 1 100
출력
2
정상출력
use the stairs