์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ/BOJ_Python

[BOJ/Step15] 10844 : ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜ (Python)

NaNaRin๐Ÿ™ƒ 2021. 2. 25. 22:04

www.acmicpc.net/problem/10844

 

10844๋ฒˆ: ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜

์ฒซ์งธ ์ค„์— ์ •๋‹ต์„ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net


1. step[n][m] ์—๋Š” m์œผ๋กœ ๋๋‚˜๋Š” n+1์ž๋ฆฌ ๊ณ„๋‹จ ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ด๋‹ค

2. step[0] = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1] ์ด๋‹ค. ( ํ•œ์ž๋ฆฌ ๊ณ„๋‹จ์ˆ˜๋Š” 1~9 )

3. for๋ฌธ์„ ํ†ตํ•ด 2์ž๋ฆฌ๋ถ€ํ„ฐ n์ž๋ฆฌ๊นŒ์ง€์˜ ๊ณ„๋‹จ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค

  3-1. n์ž๋ฆฌ ๊ณ„๋‹จ์ˆ˜๊ฐ€ 0์œผ๋กœ ๋๋‚˜๋ ค๋ฉด n-1์ž๋ฆฌ ๊ณ„๋‹จ์ˆ˜๊ฐ€ 1๋กœ ๋๋‚˜์•ผํ•œ๋‹ค

  3-2. n์ž๋ฆฌ ๊ณ„๋‹จ์ˆ˜๊ฐ€ t(2~8) ๋กœ ๋๋‚˜๋ ค๋ฉด n-1์ž๋ฆฌ ๊ณ„๋‹จ์ˆ˜๋Š” t-1๋กœ ๋๋‚˜๊ฑฐ๋‚˜ t+1๋กœ ๋๋‚˜์•ผ ํ•œ๋‹ค

  3-3. n์ž๋ฆฌ ๊ณ„๋‹จ์ˆ˜๊ฐ€ 9๋กœ ๋๋‚˜๋ ค๋ฉด n-1์ž๋ฆฌ ๊ณ„๋‹จ์ˆ˜๊ฐ€ 8๋กœ ๋๋‚˜์•ผํ•œ๋‹ค

  3-4. ๊ณ„์‚ฐํ•œ ๊ฐ ์ˆซ์ž๋กœ ๋๋‚˜๋Š” ๊ณ„๋‹จ ์ˆ˜๋ฅผ step ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•œ๋‹ค

4. step[n-1] ์˜ ์ด ํ•ฉ์„ 1000000000๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅ

 

# 10844.py

n = int(input())

step = [[0, 1, 1, 1, 1, 1, 1, 1, 1, 1]]

for i in range(1, n):
    n0 = step[i-1][1]
    n1 = step[i-1][0] + step[i-1][2]
    n2 = step[i-1][1] + step[i-1][3]
    n3 = step[i-1][2] + step[i-1][4]
    n4 = step[i-1][3] + step[i-1][5]
    n5 = step[i-1][4] + step[i-1][6]
    n6 = step[i-1][5] + step[i-1][7]
    n7 = step[i-1][6] + step[i-1][8]
    n8 = step[i-1][7] + step[i-1][9]
    n9 = step[i-1][8]
    step.append([n0, n1, n2, n3, n4, n5, n6, n7, n8, n9])

print(sum(step[n-1]) % 1000000000)