๐ค๋ฌธ์ ์ดํด
0์ด ๋งจ ์์ ์ฌ ์ ์์ผ๋ฏ๋ก 1~N์๋ฆฌ์ ์ซ์ ์ค i๋ฒ์งธ ์ซ์๊ฐ i+1๋ฒ์งธ ์ซ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
๐ก์ฒซ๋ฒ์งธ ์์ด๋์ด
์ผ๋จ ๋งจ ์ฒ์์ 0์ด ์ค๊ณ ๊ทธ ๋ค์์ ์ฌ ์ ์๋ ์ซ์๋ค์ ๋์ดํด ๋ดค๋ค.
N์ด ์ปค์ง์๋ก ์ค๋ณต๋๋ ๊ฐ๋ค์ด ๋ณด์๊ณ DP ๋ฌธ์ ์์ ํ์ ํ๋ค!
๐ฅํ์ด๐ฅ
dp[i][j]์์ i๋ ๋งจ ์ฒ์์ ์ฌ ์ ์๋ ์๋ก 0~9๊น์ง๋ฅผ ๋ํ๋ด๊ณ , j๋ ์๋ฆฟ์๋ฅผ ์๋ฏธํ๋ค.
์๋ฆฟ์๊ฐ j์ผ ๋ dp[0][j]๋ dp[0][j-1] ~ dp[9][j-1]๊น์ง์ ๊ฐ์ ๋ค ๋ํ ๊ฐ์ด๋ค.
๊ตฌํ๊ณ ์ ํ๋ ์๋ฆฟ์๊น์ง dp๋ฅผ ์ฑ์ ์ผ๋ฉด ๋ง์ง๋ง์ผ๋ก ๊ทธ ์๋ฆฟ์๋ก ๋ง๋ค์ด์ง๋ ์ฒ์ ์ซ์๊ฐ 0~9๊น์ง์ธ ์ซ์๋ค์ ๊ฐ์๋ฅผ ๋ค ๋ํ๋ค.
๋ชจ๋ dp์ฐ์ฐ๊ณผ ๋ง์ง๋ง ์ดํฉ, ์ถ๋ ฅ๊น์ง %10007 ์ฐ์ฐ์ ํด์ฃผ์ด ๊ณ์ฐ ๊ฒฐ๊ณผ๊ฐ int ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๊ฒ ํด์ค๋ค.
โํธ๋ฌ๋ธ ์ํ
์ผ๋จ dp[0][1] ~ dp[9][1]๊น์ง 1๋ก ์ด๊ธฐํํด์ฃผ์๊ธฐ ๋๋ฌธ์ 3์ค for๋ฌธ์์๋ ์๋ฆฟ์ 2๋ถํฐ ์์ํด์ค์ผ ํ๋ค. ์ด์ฐจํผ dp[][0]๊ฐ์ 0์ด๋ฏ๋ก ์๊ด์๊ธด ํ์ง๋ง..๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ํฐ ์ค์๋ก๋ ๋ง์ง๋ง์ผ๋ก ๊ฒฐ๊ณผ ๊ฐ์ ์ถ๋ ฅํ ๋ %10007 ์ฐ์ฐ์ ํด์ฃผ์ง ์์๋ค.
#include <iostream>
using namespace std;
int dp[11][1001];
int n;
int main() {
cin.tie(nullptr);
cout.tie(nullptr);
ios::sync_with_stdio(false);
cin >> n;
for (int i = 0; i < 10; i++) {
dp[i][1] = 1;
}
for (int i = 2; i <= n; i++) {
for (int j = 0; j < 10; j++) {
for (int k = j; k < 10; k++) {
dp[j][i] += dp[k][i - 1] % 10007;
}
}
}
int ans = 0;
for (int i = 0; i < 10; i++) {
ans += dp[i][n] % 10007;
}
cout << ans % 10007;
}
'๋ฐฑ์ค > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 11053๋ฒ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (0) | 2022.07.20 |
---|---|
[๋ฐฑ์ค/C++] 5021๋ฒ ์์๊ณ์น (0) | 2022.07.18 |
[๋ฐฑ์ค/C++] 1939๋ฒ ์ค๋์ ํ (0) | 2022.07.18 |
[๋ฐฑ์ค/C++] 14716๋ฒ ํ์๋ง (0) | 2022.07.16 |
[๋ฐฑ์ค/C++] 1149๋ฒ RGB๊ฑฐ๋ฆฌ (0) | 2022.07.16 |