ํฐ์คํ ๋ฆฌ ๋ทฐ
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์ ํฉ์ผ๋ก N์ด๋ผ๋ ์ซ์๋ฅผ ๋ํ๋ด๊ณ ์ ํ ๋ ์์์ด ๋์นญ์ธ ๊ฒฝ์ฐ๋ง ๋ฐฉ๋ฒ์ ์๋ก ์ทจ๊ธํ๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด N์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋์ดํ๋ฉด ์๋์ ๊ฐ๋ค.
- N์ 1์ธ ๊ฒฝ์ฐ: 1๊ฐ
- `1`
- N์ 2์ธ ๊ฒฝ์ฐ: 2๊ฐ
- `1 + 1`
- `2`
- N์ 3์ธ ๊ฒฝ์ฐ: 2๊ฐ
- `1 + 1 + 1`
- `3`
- N์ 4์ธ ๊ฒฝ์ฐ: 3๊ฐ
- `1 + 1 + 1 + 1`
- `2 + 2`
- `4`
- N์ 5์ธ ๊ฒฝ์ฐ: 3๊ฐ
- `1 + 1 + 1 + 1 + 1`
- `2 + 1 + 2`
- `5`
- N์ 6์ธ ๊ฒฝ์ฐ: 4๊ฐ
- `1 + 1 + 1 + 1 + 1 + 1`
- `2 + 2 + 2`
- `3 + 3`
- `6`
์ด์ ๊ฐ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๊ณ N์ด 7์ธ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๊ณ ์ ํ๋ฉด `1 + 5 + 1`, `2 + 3 + 2`, `3 + 1 + 3`๊ณผ ๊ฐ์ด ์ ์์ผ๋ก 1, 2, 3์ ๋ถ์ด๋ ๊ฒฝ์ฐ์ ์๊ฐ ์กด์ฌํจ์ ์ ์ ์๋ค. ์ค๊ฐ์ ์ค๋ ์ซ์์ธ `5, 3, 1`์ ์์์ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ์์ผ๋ฏ๋ก `3 + 2 + 1 = 6`์ด๋ผ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋์ถํ ์ ์๋ค. ์ด๋ฅผ ์ ํ์์ผ๋ก ๋ํ๋ธ๋ค๋ฉด `dp[N - 2] + dp[N - 4] + dp[N - 6]`์ด๋ค. ์ฆ, ์ ํ์ ์์์ ๋ถํฐ ์ ์์ผ๋ก 1, 2, 3์ด ๋ถ๋ ๊ฒฝ์ฐ์ด๋ค.
์ฝ๋
from sys import stdin
if __name__ == '__main__':
MAX = 100001
divisor = 1000000009
dp = [0, 1, 2, 2, 3, 3, 6] + [0] * (MAX - 7)
for i in range(7, MAX):
dp[i] = (dp[i - 2] + dp[i - 4] + dp[i - 6]) % divisor
t = int(stdin.readline())
for _ in range(t):
n = int(stdin.readline())
print(dp[n])
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 15993 1, 2, 3 ๋ํ๊ธฐ 8 (0) | 2020.09.30 |
---|---|
๋ฐฑ์ค: 15992 1, 2, 3 ๋ํ๊ธฐ 7 (0) | 2020.09.29 |
๋ฐฑ์ค: 15990 1, 2, 3 ๋ํ๊ธฐ 5 (0) | 2020.09.29 |
๋ฐฑ์ค: 15989 1, 2, 3 ๋ํ๊ธฐ 4 (0) | 2020.09.28 |
๋ฐฑ์ค: 12101 1, 2, 3 ๋ํ๊ธฐ 2 (0) | 2020.09.28 |