๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Problem Solving/BAEKJOON

[baekjoon]python #5014 ์Šคํƒ€ํŠธ ๋งํฌ

by DevIseo 2023. 1. 26.

[baekjoon]python #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

import sys
from collections import deque
input = sys.stdin.readline
F,S,G,U,D = map(int,input().split())
# ๊ฑด๋ฌผ๋†’์ด, ๊ฐ•ํ˜ธ, ํƒ€๊ฒŸ, ์œ„, ์•„๋ž˜


queue = deque()
queue.append((S,0)) # ๊ฐ•ํ˜ธ์˜ ์œ„์น˜, count
visit = [0]*(F+1) # ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ visit ๋ฐฐ์—ด

flag = 0 # ๋ชฉํ‘œ์ธต์— ๊ฐ€๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์œ„ํ•œ flag
while queue:
    now,ncnt = queue.popleft()
    visit[now] = 1
    direct = [U,D*(-1)]

    if now == G:
        flag = 1 #๋„์ฐฉ
        print(ncnt)
        break

    for i in range(2):
        move = now+direct[i]

        if 1<=move<(F+1) and visit[move]==0:
            visit[move] = 1
            queue.append((move,ncnt+1))


if flag==0: #๋„์ฐฉํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด
    print('use the stairs')

 

๋Œ“๊ธ€