BOJ 2688 : 줄어들지 않아
2020. 8. 17. 01:28ㆍPS/DP
https://www.acmicpc.net/problem/2688
2688번: 줄어들지 않아
문제 어떤 숫자가 줄어들지 않는다는 것은 그 숫자의 각 자리 수보다 그 왼쪽 자리 수가 작거나 같을 때 이다. 예를 들어, 1234는 줄어들지 않는다. 줄어들지 않는 4자리 수를 예를 들어 보면 0011,
www.acmicpc.net
그냥 누가 봐도 DP로 전처리를 하고 각 입력에 대응하면 된다.
dp[i][j] = "길이가 i, 마지막 자리의 수가 j일 때 경우의 수"
경우를 따져 보자.
1번째 경우 : i=1일 때
dp[i][j] = 1
2번째 경우 : i>1일 때
dp[i][j] = Σ dp[i-1][k] (0<=k<=j)
#include <bits/stdc++.h>
#define MEM 66
#define sanic ios_base::sync_with_stdio(0)
#define f first
#define s second
#define pb push_back
#define all(x) ((x).begin()),((x).end())
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pii;
const ll MOD = 1e9+7;
ll dp[MEM][MEM];
ll t,n;
int main() {
sanic; cin.tie(0);
for(int i=1; i<65; i++){
for(int j=0; j<10; j++){
if(i==1) dp[i][j] = 1;
else
for(int k=0; k<=j; k++)
dp[i][j] += dp[i-1][k];
}
}
cin >> t;
while(t--){
cin >> n;
ll ans=0;
for(int i=0; i<10; i++)
ans += dp[n][i];
cout << ans << '\n';
}
}
'PS > DP' 카테고리의 다른 글
BOJ 11570 : 환상의 듀엣 (0) | 2021.04.30 |
---|---|
BOJ 14728 : 벼락치기 (0) | 2021.01.10 |
BOJ 17623 : 괄호 (0) | 2020.08.17 |
BOJ 3056 : 007 (0) | 2020.08.13 |
BOJ 2240 : 자두나무 (0) | 2020.06.01 |