똥그래미 코딩공장
백준 5014번(스타트링크) 파이썬 본문
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
이 문제는 저번에 풀어 보았던 "숨바꼭질" 문제와 거의 동일하다고 볼 수 있다.
아니? 그냥 똑같다.
설명은 주석에 첨부해 놓았다.
아래는 코드이다.
from collections import deque
import sys
input = sys.stdin.readline
f,s,g,u,d = map(int,input().split())
count=[0]*(f+1) # 계단
visited = [False]*(f+1) # 방문처리할 리스트
def bfs(S,G,U,D):
q=deque() # 데크 선언
q.append(S) # 처음 위치를 삽입
visited[S] = True # 처음위치 방문처리
while q:
x = q.popleft()
if x == G: # 스타트 링크의 층과 같으면
print(count[x]) # 출력
break
for nx in (x+U,x-D): # 현위치에서 위로갈 층, 아래로갈 층을 탐색한다
if 0<nx<f+1 and visited[nx] == False: # 범위 안벗어나고 방문하지 않았으면
visited[nx] = True # 방문처리 해준다
count[nx] = count[x]+1 # 움직일때마다 +1씩 늘려준다
q.append(nx) # 데크 삽입
bfs(s,g,u,d)
if g != s and count[g] == 0: # 처음시작할때 같은 위치에 있지 않고 스타트 층을 방문하지 않았을때
print("use the stairs")
별다른 코멘트가 필요 없는 문제인거같다.
'Algorithm' 카테고리의 다른 글
| 백준 3085번(사탕게임) 파이썬 (0) | 2023.04.11 |
|---|---|
| 백준 1182번(부분 수열의 합) 파이썬 (0) | 2023.04.05 |
| 백준 1238번(파티) 파이썬 (0) | 2023.03.03 |
| 백준 2110번(공유기 설치) 파이썬 (0) | 2023.03.03 |
| 백준 2563번(색종이) 파이썬 (0) | 2023.03.01 |