ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
1, 2, 3 ๋ํ๊ธฐ ์๋ฆฌ์ฆ
- 1, 2, 3 ๋ํ๊ธฐ
- 1, 2, 3 ๋ํ๊ธฐ 2
- 1, 2, 3 ๋ํ๊ธฐ 3
- 1, 2, 3 ๋ํ๊ธฐ 4
- 1, 2, 3 ๋ํ๊ธฐ 5
- 1, 2, 3 ๋ํ๊ธฐ 6
- 1, 2, 3 ๋ํ๊ธฐ 7
- 1, 2, 3 ๋ํ๊ธฐ 8
- 1, 2, 3 ๋ํ๊ธฐ 9
๋ฌธ์
๋ฌธ์ ํ์ด
์์ ๋ค๋ฃฌ 1, 2, 3 ๋ํ๊ธฐ 7์ ์ดํดํ๊ณ ์๋ค๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์ด๋ค. 1, 2, 3 ๋ํ๊ธฐ 7์์๋ N์ ๊ตฌํ ๋ M ๋งํผ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ง ๊ตฌํ๋ฉด ๋๋ค. ์ด ๋ฌธ์ ์์๋ M์ดํ์ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ์ฌ์ผ ํ๊ธฐ์ 1, 2, 3 ๋ํ๊ธฐ 7์์ M์ดํ์ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ํด์ฃผ๋ฉด ๋ฌธ์ ์์ ์ํ๋ ๋ต์์ ๊ตฌํ ์ ์๋ค.
์ฝ๋
from sys import stdin
if __name__ == '__main__':
MAX = 1001
divisor = 1000000009
dp = [[0] * MAX for _ in range(MAX)]
# 1์ ๋ํ๋ผ ์ ์๋ ๊ฒฝ์ฐ
dp[1][1] = 1
# 2๋ฅผ ๋ํ๋ผ ์ ์๋ ๊ฒจ์ฐ
dp[2][1] = 1
dp[2][2] = 1
# 3์ ๋ํ๋ผ ์ ์๋ ๊ฒฝ์ฐ
dp[3][1] = 1
dp[3][2] = 2
dp[3][3] = 1
for i in range(4, MAX):
# ์ฌ์ฉํ ์ ์๋ ์๋ ํ์ฌ์์ ํฌ๊ธฐ ๋งํผ์ด๋ค.
# ์๋ฅผ ๋ค์ด 5์ ๊ฒฝ์ฐ ์ซ์ 6๊ฐ๋ก ์ฌ์ฉํ์ฌ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
for j in range(1, i + 1):
dp[i][j] = (dp[i - 1][j - 1] + dp[i - 2][j - 1] + dp[i - 3][j - 1]) % divisor
t = int(stdin.readline())
for _ in range(t):
n, m = map(int, stdin.readline().split())
print(sum(dp[n][1:m + 1]) % divisor)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 2343 ๊ธฐํ ๋ ์จ (0) | 2020.10.01 |
---|---|
๋ฐฑ์ค: 5014 ์คํํธ๋งํฌ (0) | 2020.10.01 |
๋ฐฑ์ค: 15993 1, 2, 3 ๋ํ๊ธฐ 8 (0) | 2020.09.30 |
๋ฐฑ์ค: 15992 1, 2, 3 ๋ํ๊ธฐ 7 (0) | 2020.09.29 |
๋ฐฑ์ค: 15991 1, 2, 3 ๋ํ๊ธฐ 6 (0) | 2020.09.29 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ