본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 5014번 스타트링크(python)

by 윤무무 2023. 2. 17.

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

 

1. 내가 작성한 코드
from collections import deque

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

visit = [0] * (f+1)

def bfs():

  queue = deque()
  queue.append(s)
  visit[0] = 1
  visit[s] = 1

  while queue:

    x = queue.popleft()

    dx = [u,-d]

    for i in range(2):
      nx = x + dx[i]

      if nx < 0 or nx> f:
        continue

      if visit[nx] == 0:
        visit[nx] = visit[x] + 1
        queue.append(nx)

bfs()

if s == g:
  print(0)

elif visit[g] == 0:
  print("use the stairs")

else:
  print(visit[g]-1)

 

이 문제에서 놓칠 수 있는 점

 

1) list를 f + 1층으로 만들었을 경우, 0층에 방문했다는 체크 해주기

 

2) s == g가 같을 경우 예외처리 해주기

댓글