๋ฐฑ์ค€/C++

[๋ฐฑ์ค€/C++] 11057๋ฒˆ ์˜ค๋ฅด๋ง‰ ์ˆ˜

yulee_to 2022. 7. 18. 01:53

๋ฐฑ์ค€


๐Ÿค”๋ฌธ์ œ ์ดํ•ด

0์ด ๋งจ ์•ž์— ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 1~N์ž๋ฆฌ์˜ ์ˆซ์ž ์ค‘ i๋ฒˆ์งธ ์ˆซ์ž๊ฐ€ i+1๋ฒˆ์งธ ์ˆซ์ž๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 


๐Ÿ’ก์ฒซ๋ฒˆ์งธ ์•„์ด๋””์–ด

์ผ๋‹จ ๋งจ ์ฒ˜์Œ์— 0์ด ์˜ค๊ณ  ๊ทธ ๋‹ค์Œ์— ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋“ค์„ ๋‚˜์—ดํ•ด ๋ดค๋‹ค. 

N์ด ์ปค์งˆ์ˆ˜๋ก ์ค‘๋ณต๋˜๋Š” ๊ฐ’๋“ค์ด ๋ณด์˜€๊ณ  DP ๋ฌธ์ œ์ž„์„ ํ™•์‹ ํ–ˆ๋‹ค!

 

๐Ÿ”ฅํ’€์ด๐Ÿ”ฅ

dp[i][j]์—์„œ i๋Š” ๋งจ ์ฒ˜์Œ์— ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋กœ 0~9๊นŒ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , j๋Š” ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ž๋ฆฟ์ˆ˜๊ฐ€ j์ผ ๋•Œ dp[0][j]๋Š” dp[0][j-1] ~ dp[9][j-1]๊นŒ์ง€์˜ ๊ฐ’์„ ๋‹ค ๋”ํ•œ ๊ฐ’์ด๋‹ค.

๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ž๋ฆฟ์ˆ˜๊นŒ์ง€ dp๋ฅผ ์ฑ„์› ์œผ๋ฉด ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ทธ ์ž๋ฆฟ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์ฒ˜์Œ ์ˆซ์ž๊ฐ€ 0~9๊นŒ์ง€์ธ ์ˆซ์ž๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‹ค ๋”ํ•œ๋‹ค.

๋ชจ๋“  dp์—ฐ์‚ฐ๊ณผ ๋งˆ์ง€๋ง‰ ์ดํ•ฉ, ์ถœ๋ ฅ๊นŒ์ง€ %10007 ์—ฐ์‚ฐ์„ ํ•ด์ฃผ์–ด ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ int ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ฒŒ ํ•ด์ค€๋‹ค.

 

โŒํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

์ผ๋‹จ dp[0][1] ~ dp[9][1]๊นŒ์ง€ 1๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 3์ค‘ for๋ฌธ์—์„œ๋Š” ์ž๋ฆฟ์ˆ˜ 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์ค˜์•ผ ํ–ˆ๋‹ค. ์–ด์ฐจํ”ผ dp[][0]๊ฐ’์€ 0์ด๋ฏ€๋กœ ์ƒ๊ด€์—†๊ธด ํ–ˆ์ง€๋งŒ..๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ํฐ ์‹ค์ˆ˜๋กœ๋Š” ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ถœ๋ ฅํ•  ๋•Œ %10007 ์—ฐ์‚ฐ์„ ํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค. 


#include <iostream>

using namespace std;

int dp[11][1001];
int n;

int main() {
    cin.tie(nullptr);
    cout.tie(nullptr);
    ios::sync_with_stdio(false);
    cin >> n;

    for (int i = 0; i < 10; i++) {
        dp[i][1] = 1;
    }

    for (int i = 2; i <= n; i++) {
        for (int j = 0; j < 10; j++) {
            for (int k = j; k < 10; k++) {
                dp[j][i] += dp[k][i - 1] % 10007;
            }
        }
    }
    int ans = 0;
    for (int i = 0; i < 10; i++) {
        ans += dp[i][n] % 10007;
    }
    cout << ans % 10007;
}
728x90