백준 풀이
[백준/BOJ] - 5014번 python 풀이 - bfs
반오십 코린이
2023. 3. 27. 19:20
728x90
1. 맨 처음 queue에 시작하는 층을 넣어준다.
2. 방문처리를 한다.
3. 큐에 값이 존재한다면 큐에서 값을 꺼낸다.
4. 꺼낸 값을 기준으로 up, down 값을 연산하여 방문처리, 카운트값 연산, 해당 값을 queue에 넣어준다.
5. 그러면 갈 수 있는 층의 count 값이 몇번 버튼을 눌러야 갈 수 있는 층인지 확인이 가능하다.
import sys
from collections import deque
input = sys.stdin.readline
#전체, 현재, 목적지, 업, 다운
f,s,g,u,d = map(int,input().split())
#경우의 수 방문처리 리스트
ok = [False] * (f+1)
count = [0 for _ in range(f+1)]
def bfs():
queue = deque([s])
ok[s] = True
while queue:
v = queue.popleft()
if v == g:
print(count[g])
exit()
for i in (v+u,v-d): # 2, -1
if 0 < i <= f and not ok[i]:
ok[i] = True
count[i] = count[v] + 1
queue.append(i) # queue에서 뽑은 값 + 업
bfs()
print("use the stairs")
728x90