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

문제 설명


풀이 코드

각 층마다 버튼을 몇번씩 눌려 도달했는지 저장하기 위해 visited[] 배열을 선언하였다.

강호의 위치(S)부터 bfs로 탐색을 시작한다.

강호의 위치(S)가 스타트링크(G)에 도착하면 스타트링크까지 도착하는데 눌린 버튼횟수를 반환한다. visited[cur]

 

정답 코드
from collections import deque
import sys
input = sys.stdin.readline

f, s, g, u, d = map(int, input().split()) # 층수, 강호, 스타트링크, 위, 아래
visited = [-1] * (f + 1)

def bfs(start):
    q = deque()
    q.append(start)
    visited[start] = 0

    while q:
        cur = q.popleft()

        if cur == g:
            return visited[cur]

        for next in (cur + u, cur - d):
            if 0 < next <= f and visited[next] == -1: # 건물은 1층 부터 시작
                visited[next] = visited[cur] + 1
                q.append(next)
                
    # G까지 도달하지 못할 경우
    if visited[g] == -1: 
        return "use the stairs"

print(bfs(s))