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

[BOJ][C++] ๋ฐฑ์ค€ 10844๋ฒˆ: ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜

์„ ๋‹ฌ 2023. 11. 8. 11:11
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/10844

 

10844๋ฒˆ: ์‰ฌ์šด ๊ณ„๋‹จ ์ˆ˜

์ฒซ์งธ ์ค„์— ์ •๋‹ต์„ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

45656์ด๋ž€ ์ˆ˜๋ฅผ ๋ณด์ž.

์ด ์ˆ˜๋Š” ์ธ์ ‘ํ•œ ๋ชจ๋“  ์ž๋ฆฌ์˜ ์ฐจ์ด๊ฐ€ 1์ด๋‹ค. ์ด๋Ÿฐ ์ˆ˜๋ฅผ ๊ณ„๋‹จ ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.

N์ด ์ฃผ์–ด์งˆ ๋•Œ, ๊ธธ์ด๊ฐ€ N์ธ ๊ณ„๋‹จ ์ˆ˜๊ฐ€ ์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ๊ตฌํ•ด๋ณด์ž. 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆ˜๋Š” ๊ณ„๋‹จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ •๋‹ต์„ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

์ถœ๋ ฅ์— ์ •๋‹ต์„~~๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ๋ณด๋‹ˆ dp ๋ถ€ํ„ฐ ๋– ์˜ค๋ฅธ๋‹ค

dp๋กœ ๊ฐ€๋ณด์ž.

 

dp[i][k] = ๊ธธ์ด๊ฐ€ i์ธ ๊ณ„๋‹จ ์ˆ˜ ์ค‘ ๋งจ ๋’ค ์ˆซ์ž๊ฐ€ k์ธ ๊ฒฝ์šฐ์˜ ์ˆ˜

 

dp[i-1] ์˜ ๋งˆ์ง€๋ง‰ ์ˆซ์ž k๋ผ๋ฉด ๊ทธ ๋‹ค์Œ ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋Š”

k=0 ์ธ ๊ฒฝ์šฐ -> 1 -> 1๊ฐœ

k=1~8 ์ธ ๊ฒฝ์šฐ -> k-1, k+1 -> 2๊ฐœ

k=9 ์ธ ๊ฒฝ์šฐ -> 8 -> 1๊ฐœ

 

์ฆ‰

dp[i][0] = dp[i-1][1];

dp[i][k] = dp[i-1][k-1] + dp[i-1][k+1];

dp[i][9] = dp[i-1][8];

 

// ํ’€์ด : https://whkakrkr.tistory.com

#include <iostream>
#include <vector>

using namespace std;

const int MOD = 1000000000;

int main() {
    int n;
    cin >> n;
    
    vector<vector<int>> dp(n+1, vector<int>(10));
    dp[1] = {0,1,1,1,1,1,1,1,1,1};
    int next;
    for(int i=2; i<=n; i++) {
        dp[i][0] = dp[i-1][1];
        for(int j=0; j<10; j++) {
            if(j==0) {
                next = dp[i-1][1];
            } else if(j==9) {
                next = dp[i-1][8];
            } else {
                next = dp[i-1][j-1] + dp[i-1][j+1];
            }
            dp[i][j] = next%MOD;
        }
    }
    
    long long ans=0;
    for(int j=0; j<10; j++) {
        ans += dp[n][j];
    }
    
    cout << ans%MOD;
    
}

 

๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ ์žŠ์ง€ ๋ง์ž

๊ณ„์‚ฐ ๊ณผ์ •๊ณผ ๋‹ต์— ๋ชจ๋‘ ํฌํ•จ์‹œ์ผœ์•ผํ•œ๋‹ค

๋ฐ˜์‘ํ˜•