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