| ๋ฌธ์ ๋ด์ฉ
๋ฌธ์
45656์ด๋ ์๋ฅผ ๋ณด์.
์ด ์๋ ์ธ์ ํ ๋ชจ๋ ์๋ฆฌ์ ์ฐจ์ด๊ฐ 1์ด๋ค. ์ด๋ฐ ์๋ฅผ ๊ณ๋จ ์๋ผ๊ณ ํ๋ค.
N์ด ์ฃผ์ด์ง ๋, ๊ธธ์ด๊ฐ N์ธ ๊ณ๋จ ์๊ฐ ์ด ๋ช ๊ฐ ์๋์ง ๊ตฌํด๋ณด์. 0์ผ๋ก ์์ํ๋ ์๋ ๊ณ๋จ์๊ฐ ์๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.

| ํ์ด
2์ฐจ์ DP๋ฐฐ์ด์ ๋ง๋ค๊ณ ์๋ฆฌ์๊ฐ i์ด๊ณ ๋ง์ง๋ง ์๋ฆฌ๊ฐ j์ธ ๊ณ๋จ์์ ๊ฐ์๋ฅผ ์ ์ฅ(์: DP[1][2] => 1 [2], DP[2][3] = 2[43, 23])
์ฃผ์ํ ์ "์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅ" ์ค๊ฐ์ ๋ชจ๋๋ฌ ์ฐ์ฐ ์งํํด์ ๊ณ์ฐ ์ค๋ฒํค๋ ๋ฎ์ถ๊ธฐ
N = int(input())
DP = [[0]*10 for _ in range(N + 1)] # ๊ฐ ์๋ฆฌ์๋ 0~9๊น์ง์ ์์ด๋ฏ๋ก N*10 ๋ฐฐ์ด
MOD = 1000000000
# ์ด๊ธฐํ: ๊ธธ์ด๊ฐ 1์ธ ๊ณ๋จ์ ๊ฐ ์ถ๊ฐ
for i in range(1, 10):
DP[1][i] = 1
# DP[i][j] = DP[i-1][j-1](1<=j<=9) + DP[i-1][j+1](1<=j<=8)
for i in range(2, N+1):
for j in range(0, 10):
if j > 0:
DP[i][j] = DP[i-1][j-1]
if j < 9:
DP[i][j] += DP[i-1][j+1]
DP[i][j] %= MOD
print(sum(DP[-1]) % MOD)
| ๋๋์
์ ํ์๋ง ์ธ์ธ ์ ์์ผ๋ฉด ์ฐธ ์ฌ์ด ๊ฒ DP๋ฌธ์ ์ธ๋ฐ, ์ ํ์ ์ธ์ฐ๋ ๊ฒ ๊ฒ๋๊ฒ ์ด๋ ต๋ค๋ ๊ฒ ํจ์ ! ๋ฐํํ ์ด๊ฒ ์ค๋ฒ๋ผ๋จ..
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 2156 ํฌ๋์ฃผ ์์ (1) | 2024.04.22 |
---|---|
[Python] Softeer ์ฅ์ ๋ฌผ ์ธ์ ํ๋ก๊ทธ๋จ (1) | 2024.04.20 |
[Python] Softeer ์ง์ ํ ํจ๋ (1) | 2024.04.20 |
[Python] ๋ฐฑ์ค 1149 RGB๊ฑฐ๋ฆฌ (1) | 2024.04.20 |
[Python] ๋ฐฑ์ค 4889 ์์ ์ ์ธ ๋ฌธ์์ด (0) | 2024.04.20 |