https://www.acmicpc.net/problem/5014
# 2023.01.24
import sys
input = sys.stdin.readline
from collections import deque
# 총 f층, 지금 s층, 원하는 g층, 위로 u층 이동, 아래로 d층 이동
f, s, g, u, d = map(int, input().split())
visited=[False]*(f+1) # 방문여부
stair=[0]*(f+1)
queue=deque()
# 너비 우선 탐색
def bfs(current): # 현재 층수
queue.append(current)
visited[current]=True
while queue:
c = queue.popleft() # 현재 몇층인지?
if c == g: # 원하는 층에 도달하였으면
return stair[g]
for next in (c+u, c-d): # 위로 올라가는 경우 & 밑으로 내려가는 경우
if 0<next<=f and not visited[next]:
stair[next]=stair[c]+1
visited[next]=True
queue.append(next)
return "use the stairs"
print(bfs(s))
'Problem Solving > BOJ' 카테고리의 다른 글
[BFS] python 14503 로봇 청소기 (1) | 2023.01.26 |
---|---|
[BFS] python 2468 안전 영역 (0) | 2023.01.25 |
[DFS] python 2644 촌수계산 (0) | 2023.01.23 |
[Greedy] python 13904 과제 (0) | 2023.01.22 |
[BFS] python 2206 벽 부수고 이동하기 (1) | 2023.01.22 |