Coding Test/baekjoon

[백준 5014] 스타트링크 - python (solved.ac - 골드 5)

조용장 2022. 4. 15. 23:36

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

풀이

문제를 보았을때 알수있는 힌트

한 위치가 잡혔을때 위, 아래로 움직일수있고 이를 통해서 최소로 갈 수 있는 문제이다. 또한 가지 못하는 경우까지 고려하며 문제를 풀어야한다. 

한 곳에서 2군데로 이동가능하다 또 이미 지난 곳은 들려봤다 최소가 아니기때문에 BFS문제구나 라는 것을 알수있다.

또한 처음에 들어있는 수를 -1로 두어 도착을 못했는지를 확인할 수 있다.

import sys
from collections import deque
input =sys.stdin.readline

F,S,G,U,D = list(map(int,input().split()))

n_list = [-1 for _ in range(F+1)]
visited=[False for _ in range(F+1)]

queue = deque([S])
n_list[S]=0
visited[S]=True

while queue:
    v= queue.popleft()
    if v+U<=F:
        if visited[v+U]==False:
            visited[v+U]=True
            queue.append(v+U)
            n_list[v+U]=n_list[v]+1
    if 0<v-D:
        if visited[v-D]==False:
            visited[v-D]=True
            queue.append(v-D) 
            n_list[v-D]=n_list[v]+1

if n_list[G]==-1:
    print("use the stairs")
else:
    print(n_list[G])

https://github.com/dydwkd486/coding_test/blob/main/baekjoon/baekjoon5014.py

 

GitHub - dydwkd486/coding_test: 코딩테스트 공부한 내용 정리

코딩테스트 공부한 내용 정리. Contribute to dydwkd486/coding_test development by creating an account on GitHub.

github.com