๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿƒ algorithm/boj

BOJ 5014 - ์Šคํƒ€ํŠธ๋งํฌ

by HandHand 2021. 6. 9.

๋ฌธ์ œ

๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 5014๋ฒˆ

ํ’€์ด ๊ณผ์ •

๊ฑด๋ฌผ์˜ ์‹œ์ž‘ ์ธต๊ณผ ๋ชฉํ‘œ ์ธต์ด ์ฃผ์–ด์กŒ์œผ๋ฏ€๋กœ BFS ํƒ์ƒ‰์„ ํ†ตํ•ด ๋ชฉํ‘œ ์ง€์ ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ธต์ด ๊ฑด๋ฌผ์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๋งŒ ์ฃผ์˜ํ•œ๋‹ค๋ฉด ๋ฌด๋‚œํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ


import sys
from collections import deque

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


def bfs(start):
    visit = [0 for _ in range(F+1)]
    q = deque()

    visit[start] = 1
    q.append((start, 0))

    while q:
        here, cost = q.popleft()
        if here == G:
            return cost

        for mv in [U, -D]:
            next = here + mv
            if 1 <= next <= F and not visit[next]:
                visit[next] = 1
                q.append((next, cost + 1))

    return -1


def solution():
    ans = bfs(S)
    return ans if ans != -1 else 'use the stairs'


print(solution())
๋ฐ˜์‘ํ˜•

๐Ÿ’ฌ ๋Œ“๊ธ€