๐Ÿ•๏ธ ICPC Sinchon/Dynamic Programming

[BOJ][C++] ๋ฐฑ์ค€ 2688๋ฒˆ: ์ค„์–ด๋“ค์ง€ ์•Š์•„

์„ ๋‹ฌ 2024. 9. 6. 05:59
๋ฐ˜์‘ํ˜•

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;
}
๋ฐ˜์‘ํ˜•