본문 바로가기
백준 풀이

[백준/BOJ] - 5014번 python 풀이 - bfs

by 반오십 코린이 2023. 3. 27.
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