본문 바로가기
Problem Solving/BOJ

[BFS] python 5014 스타트링크

by Bokoo14 2023. 1. 24.

https://www.acmicpc.net/problem/5014

 

5014번: 스타트링크

첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.

www.acmicpc.net

# 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