동캄의 코딩도장

백준 5014 [스타트링크] 파이썬 본문

코테/BOJ

백준 5014 [스타트링크] 파이썬

동 캄 2022. 9. 3. 16:22

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

# 백준 5014 스타트링크
from collections import deque
F, S, G, U, D = map(int, input().split())


def bfs(F, S, G, U, D):
    visited = [10**6]*(F+1)
    visited[S] = 0
    q = deque()
    q.append(S)
    while q:
        pos = q.popleft()
        if pos+U <= F and visited[pos+U] > visited[pos]+1:
            visited[pos+U] = visited[pos]+1
            q.append(pos+U)
        if pos-D >= 1 and visited[pos-D] > visited[pos]+1:
            visited[pos-D] = visited[pos]+1
            q.append(pos-D)
    # print(visited)
    return visited[G]


ans = bfs(F, S, G, U, D)
if ans == 10**6:
    print('use the stairs')
else:
    print(ans)

처음에는 dp로 해결하려고 하였으나, 너무 많은 경우의 수가 발생할 거 같아, bfs로 해결하였다.

'코테 > BOJ' 카테고리의 다른 글

백준 20300 [서강근육맨] 파이썬  (0) 2022.09.03
백준 6593 [상범 빌딩] 파이썬  (0) 2022.09.03
백준 14719 [빗물] 파이썬  (0) 2022.09.03
백준 1068 [트리] 파이썬  (0) 2022.09.02
백준 2251 [물통] 파이썬  (0) 2022.05.26