λ°±μ€ 10844 νμ΄μ¬
https://www.acmicpc.net/problem/10844
μ΄λ² λ¬Έμ λ κ³λ¨ μλ₯Ό ꡬνλ λ¬Έμ μ΄λ€. κ³λ¨ μλ "45656" μ²λΌ μ«μμ μλ¦Ώμ λ§λ€ νλ μ© μ€κ³ λμ΄λλ μλ₯Ό λ§νλ€. 0μΌλ‘ μμν μ μμΌλ©° 90μ κ³λ¨ μκ° μλλ€. μ΄λ° 쑰건μΌλ‘ μλμ κ°μ κ·μΉμ΄ λ§λ€μ΄ μ§λ€.
- 0 λ€μμλ 1λ§ μ¬ μ μλ€.
- 9 λ€μμλ 8λ§ μ¬ μ μλ€.
- λλ¨Έμ§ μ«μμ λν΄μλ μλ€ λͺ¨λ μ¬ μ μλ€.
λμ κ³νλ²μΌλ‘ μ«μμ κΈΈμ΄μ λ°λΌ λ§λ€ μ μλ μ«μμ κ°―μλ₯Ό μ μ₯νλλ°... κ° μ«μμ λμ리λ₯Ό κΈ°μ€μΌλ‘ κΈ°μ΅ν μ μλ λ©λͺ¨μ΄μ μ΄μ 리μ€νΈλ₯Ό μμ±ν΄μ μ¬μ©νλ€.
Python νμ΄
import sys
read = sys.stdin.readline
N = int(read())
cache = [0,1,1,1,1,1,1,1,1,1]
for _ in range(N-1):
temp = [0] * 10
for n in range(10):
if n-1 >= 0:
temp[n-1] += cache[n]
if n+1 <= 9:
temp[n+1] += cache[n]
cache = temp
print(sum(cache) % 1_000_000_000)
- μΊμμ μ΄κΈ° κ°μ μ«μκ° 1μλ¦¬μΌ κ²½μ°μ κ°μ λͺ¨λ μ λ ₯ν΄μ€λ€.
- 1μλ¦¬μΈ κ²½μ°λ μ μνμΌλ―λ‘ N-1 λ§νΌ forλ¬Έμ λλ¦¬κ³ μμ 리μ€νΈλ₯Ό λ§λ€μ΄ λ€μ κΈΈμ΄μ μλ₯Ό ꡬνλ€.
- n-1 >= 0 : nμ΄ 1~9
- n+1 <=9 : nμ΄ 0~8
- nμ΄ 0μΈ κ²½μ° λμλ¦¬κ° 1μΈ μ«μμ μλ₯Ό 1λ² λνλ€.
- nμ΄ 9μΈ κ²½μ° λμλ¦¬κ° 8μΈ μ«μμ μλ₯Ό 1λ² λνλ€.
- κ·ΈμΈλ μλ€μ μλ‘ μλ‘μ΄ κ³λ¨ μλ₯Ό λ§λ€ μ μκΈ° λλ¬Έμ μλ€ μ«μμ μλ₯Ό 1λ² μ© λνλ€.
- λ¬Έμ μ 쑰건μ λ°λΌ 10^9λ₯Ό λλ μ μΆλ ₯νλ€.
λκΈ