๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] 11060๋ฒˆ_์ ํ”„ ์ ํ”„

Dbswnstjd 2022. 11. 28. 11:13

๋ฌธ์ œ

https://www.acmicpc.net/problem/11060

 

11060๋ฒˆ: ์ ํ”„ ์ ํ”„

์žฌํ™˜์ด๊ฐ€ 1×N ํฌ๊ธฐ์˜ ๋ฏธ๋กœ์— ๊ฐ‡ํ˜€์žˆ๋‹ค. ๋ฏธ๋กœ๋Š” 1×1 ํฌ๊ธฐ์˜ ์นธ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ ์นธ์—๋Š” ์ •์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์“ฐ์—ฌ ์žˆ๋‹ค. i๋ฒˆ์งธ ์นธ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋ฅผ Ai๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, ์žฌํ™˜์ด๋Š” Ai์ดํ•˜๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 11060๋ฒˆ ๋ฌธ์ œ - ์ ํ”„ ์ ํ”„
import collections
n=int(input())
arr=list(map(int, input().split()))
dp=[1e9 for _ in range(n)]
def bfs():
    q=collections.deque()
    q.append((0, 0))
    dp[0]=0
    while q:
        cur, cnt=q.popleft()
        if arr[cur]==0:
            continue
        for i in range(1, arr[cur]+1):
            nxt=cur+i
            if 0<=nxt<n and dp[nxt]>cnt+1:
                dp[nxt]=cnt+1
                q.append((nxt, cnt+1))
bfs()
if dp[n-1]==1e9:
    dp[n-1]=-1
print(dp[n-1])