# 5014 스타트링크
# F층 건물 스타트링크 있는 위치 G 강호가있는 층은 S
# U,D
import collections
def bfs(start,end,up,down):
global F
visited[start] = 1
deque = collections.deque()
deque.append((start,0))
dx = [up,-down]
result = 'use the stairs'
while deque:
num,cnt = deque.popleft()
if num == end:
result = cnt
break
for i in range(2):
nx = num + dx[i]
if 0 <= nx <= F:
if not visited[nx]:
visited[nx] = 1
deque.append((nx,cnt+1))
return result
F,S,G,U,D = map(int,input().split())
visited = [0]*(F+1)
visited[0] = 1
print(bfs(S,G,U,D))
기본 원리는 BFS를 이용해서, 최단 이동거리를 이용하는거와 같다. 가장 가까이 갈수 있는 경우를 구하는 것이므로 BFS를 썼다.
여기서 주의해야할 점은 F+1 크기만큼의 viisted의 함수를 만들어주고, deque가 전부 비면, 갈수 있는 방안이 없는걸로 판단해야한다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] 1010 다리 놓기 (0) | 2021.01.13 |
---|---|
[BOJ] 1002 터렛 (0) | 2021.01.13 |
[BOJ] 1450 미친 로봇 (0) | 2021.01.13 |
[BOJ] 1486 등산 (0) | 2021.01.13 |
[BOJ] 1916 최소 비용 구하기 (0) | 2021.01.13 |