https://www.acmicpc.net/problem/2688
๋ฌธ์
์ด๋ค ์ซ์๊ฐ ์ค์ด๋ค์ง ์๋๋ค๋ ๊ฒ์ ๊ทธ ์ซ์์ ๊ฐ ์๋ฆฌ ์๋ณด๋ค ๊ทธ ์ผ์ชฝ ์๋ฆฌ ์๊ฐ ์๊ฑฐ๋ ๊ฐ์ ๋ ์ด๋ค.
์๋ฅผ ๋ค์ด, 1234๋ ์ค์ด๋ค์ง ์๋๋ค.
์ค์ด๋ค์ง ์๋ 4์๋ฆฌ ์๋ฅผ ์๋ฅผ ๋ค์ด ๋ณด๋ฉด 0011, 1111, 1112, 1122, 2223์ด ์๋ค. ์ค์ด๋ค์ง ์๋ 4์๋ฆฌ์๋ ์ด 715๊ฐ๊ฐ ์๋ค.
์ด ๋ฌธ์ ์์๋ ์ซ์์ ์์ 0(leading zero)์ด ์์ด๋ ๋๋ค. 0000, 0001, 0002๋ ์ฌ๋ฐ๋ฅธ ์ค์ด๋ค์ง ์๋ 4์๋ฆฌ์์ด๋ค.
n์ด ์ฃผ์ด์ก์ ๋, ์ค์ด๋ค์ง ์๋ n์๋ฆฌ ์์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T(1 <= T <= 1,000)์ด ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ์ซ์ ํ๋ n์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. (1 <= n <= 64)
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ํ ์ค์ ํ๋์ฉ ์ค์ด๋ค์ง ์๋ n์๋ฆฌ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
dp[i][j] = ์ซ์j๋ก ๋๋๋ i์๋ฆฌ ์ซ์
์๋๋
dp[i][j] = dp[i-1][0] + dp[i-1][1] + dp[i-1][2] + ... dp[i-1][j];
์ด๋ ๊ฒ ๊ฐ์ผํ์ง๋ง
์ ๋ณด๋ฉด ๊ฒฐ๊ตญ
dp[i][j-1] = dp[i-1][0] ~ dp[i-1][j-1] ์ ํฉ;
์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ
dp[i][j] = dp[i][j-1] + dp[i-1][j];
์ด๋ ๊ฒ๋ง ํด์ค๋ ์ถฉ๋ถํ๋ค
// ํ์ด : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<vector<long long>>dp(64+1, vector<long long>(10));
for(int i=0; i<=9; i++) {
dp[1][i] = 1;
}
for(int i=1; i<=64; i++) {
dp[i][0] = 1;
}
for(int i=2; i<=64; i++) {
for(int j=1; j<=9; j++) {
dp[i][j] = dp[i][j-1] + dp[i-1][j];
}
}
int t, n;
cin >> t;
while(t--) {
cin >> n;
long long ans = 0;
for(long long i : dp[n]) {
ans += i;
}
cout << ans << "\n";
}
return 0;
}
'๐๏ธ ICPC Sinchon > Dynamic Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 1577๋ฒ: ๋๋ก์ ๊ฐ์ (0) | 2024.09.16 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 4883๋ฒ: ์ผ๊ฐ ๊ทธ๋ํ (0) | 2024.09.13 |
[BOJ][C++] ๋ฐฑ์ค 1904๋ฒ: 01ํ์ผ (0) | 2024.08.25 |
[BOJ][C++] ๋ฐฑ์ค 11722๋ฒ: ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด (0) | 2024.08.19 |
[BOJ][C++] ๋ฐฑ์ค 10164๋ฒ: ๊ฒฉ์์์ ๊ฒฝ๋ก (0) | 2024.08.15 |