[백준] 스타트링크

쏠로몬·2021년 10월 23일
0

접근 방법 : BFS
코드를 다 짜 놓고 바보같이 방문 처리를 제대로 못해서 시간초과 계속 발생.
처음에 방문처리를 while문 안쪽 pop 하자마자 처리했는데 그렇게 하면 아래로 내려가는 상황, 위로 올라가는 상황의 방문 처리가 제대로 처리 되지 않음.
그래서 조건문 타자마자 처리로 수정.
while else문으로(덱이 비었을 때) 갈 수 없는 조건으로 처리.

# -*- coding: euc-kr -*-
import sys
from collections import deque

F, S, G, U, D = map(int, sys.stdin.readline().strip().split())

visited = [False] * (F + 1)

curr_list = deque([[S, 0]])
visited[S] = True

while curr_list:
    curr, cnt = curr_list.popleft()
    if curr == G:
        print(cnt)
        break

    go_up = curr + U
    go_down = curr - D

    if go_up <= F and not visited[go_up]:
        curr_list.append([go_up, cnt + 1])
        visited[go_up] = True
    
    if go_down > 0  and not visited[go_down]:
        curr_list.append([go_down, cnt + 1])
        visited[go_down] = True

else:
    print("use the stairs")
profile
이사가요~ 티스토리 블로그 입니다. https://help-solomon.tistory.com/

0개의 댓글