본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[백준] 5014. 스타트링크 - Python

by chaemj97 2022. 7. 13.
728x90

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


  • 생각
    • 최단 경로를 구하는 것이므로 bfs
  • 코드
from sys import stdin
from collections import deque
input = stdin.readline

F,S,G,U,D = map(int,input().split())
# 총 F층인 건물, S층에서 G층 가기

# 방문 표시
visited = [0]*(F+1)

def bfs(now):
    global visited
    visited[now] = 1

    que = deque()
    que.append(now)

    while que:
        # 현 위치
        c_floor = que.popleft()
        # 도착?
        if c_floor == G:
            return visited[c_floor]-1

        # 위 아래 이동
        for i in [U,-D]:
            # 건물 층 수 내, 방문한 적 없는 층
            if 0 < c_floor + i <= F and visited[c_floor + i] == 0:
                que.append(c_floor + i) 
                visited[c_floor + i] = visited[c_floor] + 1
                
    # 도착 못했다면
    return 'use the stairs'

print(bfs(S))
728x90
반응형

댓글