์ฒ์์ ๋ฌธ์ ๊ฐ ์ดํด๊ฐ ์๋์ ๋จ์ํ 1-9,2-17,3-32, 4-54 ์ ์์ด ๊ท์น์ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ ์๋ชป๋ ์ ๊ทผ์ด์๋ค.
~n์ผ๋๊น์ง i๋ฒ์งธ ์ธ๋ฑ์ค์์ ๋ง๋ค์ ์๋ ๊ณ๋จ์๊ฐฏ์๊ฐ ๋ช๊ฐ์ธ์ง๋ฅผ ๊ณ์ฐํ๋ ์ ํ์์ ๋ง๋ค์ด์ผ ํ๋ค.
๋ฌธ์ |
๋ฌธ์
45656์ด๋ ์๋ฅผ ๋ณด์.
์ด ์๋ ์ธ์ ํ ๋ชจ๋ ์๋ฆฌ์์ ์ฐจ์ด๊ฐ 1์ด ๋๋ค. ์ด๋ฐ ์๋ฅผ ๊ณ๋จ ์๋ผ๊ณ ํ๋ค.
์ธ์ค์ด๋ ์์ ๊ธธ์ด๊ฐ N์ธ ๊ณ๋จ ์๊ฐ ๋ช ๊ฐ ์๋์ง ๊ถ๊ธํด์ก๋ค.
N์ด ์ฃผ์ด์ง ๋, ๊ธธ์ด๊ฐ N์ธ ๊ณ๋จ ์๊ฐ ์ด ๋ช ๊ฐ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. (0์ผ๋ก ์์ํ๋ ์๋ ์๋ค.)
์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ -> ์ถ๋ ฅ
1 -> 9
2 -> 17
ํ์ด๊ณผ์ |
(1)๊ท์น
- DP์ด๋ฏ๋ก ์ ํ์์ ์ด์ฉํฉ๋๋ค
- ์ฒซ์งธ์๋ฆฌ์ ์๋ 1~9
- ๋์งธ์๋ฆฌ ์๊ฐ 0์ด๋ฉด ๋ค์์๋ 1๋ง ์ฌ ์ ์์ต๋๋ค
- 9์ผ ๊ฒฝ์ฐ์ ๋ค์์๋ 8๋ง ์ฌ ์ ์์ต๋๋ค
- ๊ทธ์ธ์ ์ ๋ฉด ๋ค์์๋ n-1,n+1์ด ์ฌ ์ ์์ต๋๋ค
- N์๋ฆฌ์ ๊ณ๋จ์๋, N์๋ฆฌ ์ ์ผ๋ ๊ฐ ์ซ์ 0~9๊ฐ ์ฌ์ ์๋ ์์ ์ดํฉ์ ๋๋ค
(2)์์
n=3๊น์ง์ ์๋ฅผ ๋ง๋ค์ด ๋ด ๋๋ค.
n=1 | 1,2,3,4,5,6,7,8,9 (9๊ฐ) |
n=2 | 10,12,21,23,32,34,43,45,54,56,65,67,76,78,87,89,98 (17๊ฐ) |
n=3 | 101,121,123,212,234,232, .....(32๊ฐ) |
๋ฐฐ์ด์ ๋ฃ์ด์ ํํํด ๋ณด๋ฉด, i๋ฒ์งธ์์ผ๋ก ๋ง๋ค์ ์๋ ์ซ์์ ๊ฐฏ์๋
0 1 2 3 4 5 6 7 8 9
n=1 0 1 1 1 1 1 1 1 1 1 (9๊ฐ)
n=2 1 1 2 2 2 2 2 2 2 1 (17๊ฐ)
n=3 1 3 3 4 4 4 4 4 3 2 (32๊ฐ)
์ด๋ฏ๋ก,
n=m ์ผ ๊ฒฝ์ฐ
0๋ฒ์งธ ์ธ๋ฑ์ค๋ d[m-1][1]
9๋ฒ์งธ ์ธ๋ฑ์ค๋ d[m-1][8]์ด๊ณ
๋๋จธ์ง์ ์ธ๋ฑ์ค๋ ๊ฐ d[m-1][ํ์ฌ์ธ๋ฑ์ค-1] + d[m-1][ํ์ฌ์ธ๋ฑ์ค+1] ์ ๋๋ค.
๊ฐ ์ธ๋ฑ์ค์ ๋ง๋ ์์ ์ ํ ๋ค %=1000000000๋ฅผ ํด์ฃผ๊ณ
๊ฐ ํฉ๋ %1000000000 ํด์ฃผ๋๋ก ํฉ๋๋ค(๊ฐ ์ธ๋ฑ์ค์ ํฉ์ด 1000000000๋ฅผ ๋์ด๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ์ํด)
(3)์ฝ๋
#include <iostream> #include <vector> using namespace std; int main() { int N; cin >> N; vector<vector<int>> memo(N, vector<int>(10, 0)); memo[0] = {0,1,1,1,1,1,1,1,1,1};//N์ด 1์ผ๊ฒฝ์ฐ for (int n = 1; n < N ; n++) { for (int i = 0; i < 10; i++) { if (i == 0) memo[n][i] = memo[n - 1][1]; else if (i == 9) memo[n][i] = memo[n - 1][8]; else memo[n][i] = memo[n - 1][i - 1] + memo[n - 1][i + 1]; memo[n][i] %= 1000000000; } } int sum = 0; for (int j = 0; j < 10; j++) { sum += memo[N - 1][j]; sum %= 1000000000; } cout << sum << endl; return 0; } | cs |
'๐ค PS(Problem Solving) > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2193๋ฒ - ์ด์น์ (0) | 2019.07.07 |
---|---|
[๋ฐฑ์ค] 11057๋ฒ - ์ค๋ฅด๋ง ์ (0) | 2019.07.07 |
[๋ฐฑ์ค] 9095๋ฒ - 1, 2, 3 ๋ํ๊ธฐ (0) | 2019.07.03 |
[๋ฐฑ์ค] 11727๋ฒ - 2รn ํ์ผ๋ง2 (0) | 2019.07.01 |
[๋ฐฑ์ค] 11726๋ฒ - 2รn ํ์ผ๋ง (0) | 2019.07.01 |