[Python] 백준5014번 : 스타트링크

hjeu·2025년 2월 28일

백준

목록 보기
44/48
post-thumbnail

💡문제

백준 5014 문제 링크

🍀풀이

처음에 살짝 어렵게 접근하려고 했는데, 생각해보니 1차원 BFS이니까 숨바꼭질 문제랑 비슷할거라 생각했다.
근데 이거 BFS문제인거 모르고 풀었으면 좀 고생했을거 같음...

코드

import sys
from collections import deque
input = sys.stdin.readline

f, s, g, u , d = map(int, input().split())

visited = [0] * (f+1)

def bfs():
    queue = deque()
    queue.append(s)
    visited[s] = 1
    
    while queue:
        x = queue.popleft()
        
        if x == g:
            break
        for i in (x+u, x-d):
            if 0 < i <= f and visited[i] == 0:
                queue.append(i)
                visited[i] = visited[x] + 1

bfs()

# 지금 있는 층이 도착해야하는 층이면 엘베 0번
if s == g:
    print(0)
else:
    if visited[g] == 0:              # g층에 가지 않았으면 
        print('use the stairs')
    else:
        print(visited[g]-1) # 1층 부터 시작해서 -1 해줘야함

사실 bfs 함수 안에서 i의 범위에 대해 생각을 했는데 문제에 f층 건물이라 해서 f층을 넘어가면 안되는거였다! 문제를 잘 읽어야하는 이유... 사서 고생함


profile
나는야 개발왕이 될거야! (๑ •̀ω•́)۶

0개의 댓글