728x90
[백준알고리즘] 5014번: 스타트링크 -Python
https://www.acmicpc.net/problem/5014
이번 문제는 BFS 방식으로 풀었다.
나머지는 간단했다. 방문했던 층인지 점검하고 올라갈 수 있으면 u만큼 올라가고, 내려갈 수 있으면 d만큼 내려갔다.
최대공약수를 이용하신 분도 본 것 같은데 어떻게 했는지 보다가 피곤해서 포기했다 :)
import sys
from collections import deque
def bfs():
queue = deque([(s, 0)])
visit = [0] * (f+1)
visit[s] = 1
while queue:
q, c = queue.popleft()
if q == g:
return c
c += 1
if q-d >= 1 and not visit[q-d]:
visit[q-d] = 1
queue.append((q-d, c))
if q+u <= f and not visit[q+u]:
visit[q+u] = 1
queue.append((q+u, c))
return -1
f, s, g, u, d = map(int, sys.stdin.readline().split())
ans = bfs()
if ans >= 0:
print(ans)
else:
print("use the stairs")
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 1987번: 알파벳 -Python (0) | 2020.03.11 |
---|---|
[백준알고리즘] 1759번: 암호 만들기 -Python (0) | 2020.03.10 |
[백준알고리즘] 3108번: 로고 -Python (0) | 2020.03.10 |
[백준알고리즘] 2186번: 문자판 -Python (0) | 2020.03.10 |
[백준알고리즘] 2251번: 물통 -Python (0) | 2020.03.10 |