🐯 μ•Œκ³ λ¦¬μ¦˜/BOJ

[λ°±μ€€/Python] 10844:μ‰¬μš΄ 계단 수

κ³„λž€μ†Œλ…„ 2024. 6. 27. 17:08

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

κ·œμΉ™μ„ λ¨Όμ € μ°Ύμ•„λ³΄μž

본인은 A4μš©μ§€μ— κ·Έλ €κ°€λ©° κ·œμΉ™μ„ μ°Ύμ•„λ³΄μ•˜λ‹€.

인덱슀λ₯Ό 0λΆ€ν„°ν•΄μ„œ μž…λ ₯이 μ΅œλŒ€ 100이기에, 100ν–‰ 10μ—΄λ‘œ λ§Œλ“€μ–΄λ³Έλ‹€λ©΄, μ•„λž˜ 사진과 같이 λ‚˜μ˜¨λ‹€.

μ¨λ³΄λ‹ˆ κ·œμΉ™μ΄ 보인닀.

1행은 λͺ¨λ“  값이 1이고, 2ν–‰λΆ€ν„°λŠ” νŠΉλ³„ν•œ κ·œμΉ™μ΄ 생긴닀.

ν™”μ‚΄ν‘œλ‘œ ν‘œμ‹œν•΄ λ†“μ•˜λ“― 0μ—΄μ˜ 값은 이전 ν–‰μ˜ 1μ—΄μ˜ 값이고,9μ—΄μ˜ 값은 이전 ν–‰μ˜ 8μ—΄μ˜ κ°’μž„μ„ μ•Œ 수 μžˆλ‹€.

λ˜ν•œ κ°€μš΄λ° 값듀은 예λ₯Όλ“€μ–΄ 3ν–‰ 3열이라고 ν•˜λ©΄, κ·Έ 값은 2ν–‰2μ—΄κ³Ό 2ν–‰4μ—΄μ˜ κ°’μ˜ ν•©μž„μ„ μ•Œ 수 μžˆλ‹€.

이제 νƒ€λ·Έλ ˆμ΄μ…˜μœΌλ‘œ ν’€μ–΄λ³΄μž

 

n=int(input())
cache = [[0]* 10 for _ in range(101)]
for i in range(1,101):
    for j in range(0,10):
        if i ==1:
            cache[i][j] =1
        elif j==0:
            cache[i][j] = cache[i-1][j+1]
        elif j==9:
            cache[i][j] = cache[i-1][j-1]
        else:
            cache[i][j] = cache[i-1][j-1] + cache[i-1][j+1]

arr=[0] * 101
for i in range(1,101):
    for j in range(1,10):
        arr[i]+= cache[i][j]
print(arr[n]%1000000000)