본문 바로가기
카테고리 없음

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

by 육빔 2024. 3. 28.
728x90

https://www.acmicpc.net/problem/5014

 

5014번: 스타트링크

첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.

www.acmicpc.net

 

숨바꼭질과 비슷한 패턴의 BFS문제. 사실 난 DFS를 좋아하는데 거의 안쓰는 것 같다.

 

쨋든 숨바꼭질과 거의 유사하게 작성했는데 계속 83퍼쯤에서 에러가 계속 터졌었다.

왜 그런지하고 계속 생각하다가 틀린 이유를 모르겠어서 질문게시판을 뒤지다가 정답을 알았는데 이 테스트코드 넣은사람은 정말 꼼꼼한거같았다. 엘리베이터 층을 0층부터 생각하고 짜서 에러가 발생한 것이었다.. ㅋ

 

from collections import deque
F, S, G, U, D = map(int, input().split())

dis = [0] * 1000001
ch = [0] * 1000001

dq = deque()
dq.append(S)

ch[S] = 1 #쳌

while dq:
    now = dq.popleft()
    if now == G:
        break
    for next in(now+U, now-D): #상태트리
        if 1<=next<=F:
            if ch[next] == 0:
                ch[next] = 1
                dq.append(next)
                dis[next] = dis[now] + 1

if now == G:
    print(dis[now])
else:
    print("use the stairs")

 

완성