어흥

[백준 2688] 줄어들지 않아 (C++) 본문

알고리즘/백준

[백준 2688] 줄어들지 않아 (C++)

라이언납시오 2021. 3. 11. 19:47
728x90
반응형

문제 링크: www.acmicpc.net/problem/2688

 

2688번: 줄어들지 않아

첫째 줄에 테스트 케이스의 개수 T(1 <= T <= 1,000)이 주어진다. 각 테스트 케이스는 숫자 하나 n으로 이루어져 있다. (1 <= n <= 64)

www.acmicpc.net

1. 주의할 점

- DP를 이용하여 해결한다

- Int의 범위를 벗어날 수도 있으므로, Long Long으로 배열을 설정한다

 

2. 구현

- DP[][] 배열을 이용한다. 배열은 DP[숫자의 길이][끝나는 번호] 형태를 가지는 개수를 저장한다

- DP[1][]의 모든 원소는 1로 초기화한다

- DP[n][a]: DP[n-1][0]+DP[n-1][1]+...+DP[n-1][a]가 성립하므로 이에 점화식에 맞는 코드를 작성한다

 

#include <iostream>
using namespace std;
long long dp[1001][10];

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int test,a;
    cin >> test;
    for(int i=0;i<10;i++)
        dp[1][i]=1;
    for(int i=2;i<=1000;i++)
        for(int j=0;j<10;j++)
            for(int k=j;k>=0;k--)
                dp[i][j]+=dp[i-1][k];
    for(int t=0;t<test;t++){
        cin>>a;
        long long sum=0;
        for(int i=0;i<10;i++)
            sum+=dp[a][i];
        cout <<sum<<'\n';
    }
    return 0;
}
728x90
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 1484] 다이어트 (C++)  (0) 2021.03.18
[백준] 키 순서 (C++)  (0) 2021.03.17
[백준 16437] 양 구출 작전 (C++)  (0) 2021.03.11
[백준 2437] 저울 (C++)  (0) 2021.03.11
[백준 15809] 전국시대 (C++)  (0) 2021.03.11
Comments