
2225๋ฒ: ํฉ๋ถํด
์ฒซ์งธ ์ค์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
๋ฌธ์
0๋ถํฐ N๊น์ง์ ์ ์ K๊ฐ๋ฅผ ๋ํด์ ๊ทธ ํฉ์ด N์ด ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๋ง์ ์ ์์๊ฐ ๋ฐ๋ ๊ฒฝ์ฐ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ก ์ผ๋ค(1+2์ 2+1์ ์๋ก ๋ค๋ฅธ ๊ฒฝ์ฐ). ๋ํ ํ ๊ฐ์ ์๋ฅผ ์ฌ๋ฌ ๋ฒ ์ธ ์๋ ์๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ ์ ์ N(1 โค N โค 200), K(1 โค K โค 200)๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.

ํ์ด๊ณผ์
ํด๋น๋ฌธ์ ๋ "์ซ์ n์ k๊ฐ์ ์๋ฅผ ์ด์ฉํด์ ๋ง๋๋ ๊ฒฝ์ฐ์ ์"๋ฅผ ๊ตฌํ๋ผ๋ ๋ฌธ์ ์์์ต๋๋ค.
n \ k | 1 | 2 | 3 | 4 |
1 | 1 | 2 | 3 | 4 |
2 | 1 | 3 | 6 | 10 |
ํด๋น ๋ฌธ์ ์์ ์์ ๋ก ์ฃผ์ด์ง ๊ฐ๋ค์ ์ผ๋จ ์ญ์ฑ ๊ตฌํด๋ณด์๋๋
f[n][k] = f[n - 1][k] + f[n][k - 1] ํํ๋ก ๋ค์์ ํด๋นํ๋ ๊ฐ์ด ๋์ค๊ณ ,
k๊ฐ 1์ด๋ฉด ๊ฒฝ์ฐ์ ์๊ฐ 1๊ฐ๋ง๊ณ ๋ ์์ผ๋ 1์ด๋ผ๋ ๊ฐ์ด ๋์ค๊ณ n์ด 1์ธ ๊ฒฝ์ฐ์๋ k๊ฐ์ ์๋ฅผ 0๊ณผ 1๋ก๋ง ๊ตฌ์ฑ์ ํ๋ค๋ฉด ๊ทธ๋๋ก k๊ฐ์ ์๋งํผ๋ง ๋ง๋ค ์ ์๋ค๋ ์ฌ์ค์ ๊นจ๋ซ๊ฒ ๋์ด ํด๋น์ ๋ณด๋ค์ ๋ฐํ์ผ๋ก ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์์ต๋๋ค.
code
#include <iostream>
long long dp[201][201];
int main(void)
{
int n, k;
std::cin >> n >> k;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= k; j++) {
if (j == 1 || i == 1)
dp[i][j] = j;
if (1 <= j - 1 && 1 <= i - 1)
dp[i][j] = (dp[i][j - 1] + dp[i - 1][j]) % 1000000000;
}
}
std::cout << dp[n][k];
return (0);
}

ํ๊ธฐ
์ด์ฐ์ ์ฐ ๊ฐ์ ๊ตฌํด๋ด๊ธฐ๋ ํ๋๋ฐ.
์ด๋ฌํ ๊ทผ๊ฑฐ๋ฅผ ํตํด์ ๊ฐ์ ๋์ถํด๋ด๋๊ฒ์ด ์๋๋ผ "์๋ง ์ด๋ฐ์์ผ๋ก ์์ ์ ๊ฐํ๋ค๋ณด๋ฉด ์ด๋ ๊ฒ ๋์ค์ง์์๊น?" ํ๊ณ
์ด๋ฆผ์ง์ํด์ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ณผ์ ์ด ๋์ด ์์ฌ์์ด ๋ง์ด ๋จ๋ ๊ฑฐ ๊ฐ๋ค.
์ํ์ ๋ ๊ณต๋ถ๋ฅผ ํด๋ด์ผํ๋..
'Algorithm > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 18352๋ฒ - ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (C++) (0) | 2023.08.30 |
---|---|
[๋ฐฑ์ค] 1543๋ฒ - ๋ฌธ์ ๊ฒ์ (JS) (1) | 2023.08.28 |
[๋ฐฑ์ค] 2294๋ฒ - ๋์ 2 (C++) (0) | 2023.08.26 |
[๋ฐฑ์ค] 2293๋ฒ - ๋์ 1 (C++) (0) | 2023.08.26 |
[๋ฐฑ์ค] 1327๋ฒ - ์ํธ ๊ฒ์ (C++) (0) | 2023.08.24 |

2225๋ฒ: ํฉ๋ถํด
์ฒซ์งธ ์ค์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
www.acmicpc.net
๋ฌธ์
0๋ถํฐ N๊น์ง์ ์ ์ K๊ฐ๋ฅผ ๋ํด์ ๊ทธ ํฉ์ด N์ด ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๋ง์ ์ ์์๊ฐ ๋ฐ๋ ๊ฒฝ์ฐ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ก ์ผ๋ค(1+2์ 2+1์ ์๋ก ๋ค๋ฅธ ๊ฒฝ์ฐ). ๋ํ ํ ๊ฐ์ ์๋ฅผ ์ฌ๋ฌ ๋ฒ ์ธ ์๋ ์๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ ์ ์ N(1 โค N โค 200), K(1 โค K โค 200)๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.

ํ์ด๊ณผ์
ํด๋น๋ฌธ์ ๋ "์ซ์ n์ k๊ฐ์ ์๋ฅผ ์ด์ฉํด์ ๋ง๋๋ ๊ฒฝ์ฐ์ ์"๋ฅผ ๊ตฌํ๋ผ๋ ๋ฌธ์ ์์์ต๋๋ค.
n \ k | 1 | 2 | 3 | 4 |
1 | 1 | 2 | 3 | 4 |
2 | 1 | 3 | 6 | 10 |
ํด๋น ๋ฌธ์ ์์ ์์ ๋ก ์ฃผ์ด์ง ๊ฐ๋ค์ ์ผ๋จ ์ญ์ฑ ๊ตฌํด๋ณด์๋๋
f[n][k] = f[n - 1][k] + f[n][k - 1] ํํ๋ก ๋ค์์ ํด๋นํ๋ ๊ฐ์ด ๋์ค๊ณ ,
k๊ฐ 1์ด๋ฉด ๊ฒฝ์ฐ์ ์๊ฐ 1๊ฐ๋ง๊ณ ๋ ์์ผ๋ 1์ด๋ผ๋ ๊ฐ์ด ๋์ค๊ณ n์ด 1์ธ ๊ฒฝ์ฐ์๋ k๊ฐ์ ์๋ฅผ 0๊ณผ 1๋ก๋ง ๊ตฌ์ฑ์ ํ๋ค๋ฉด ๊ทธ๋๋ก k๊ฐ์ ์๋งํผ๋ง ๋ง๋ค ์ ์๋ค๋ ์ฌ์ค์ ๊นจ๋ซ๊ฒ ๋์ด ํด๋น์ ๋ณด๋ค์ ๋ฐํ์ผ๋ก ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์์ต๋๋ค.
code
#include <iostream>
long long dp[201][201];
int main(void)
{
int n, k;
std::cin >> n >> k;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= k; j++) {
if (j == 1 || i == 1)
dp[i][j] = j;
if (1 <= j - 1 && 1 <= i - 1)
dp[i][j] = (dp[i][j - 1] + dp[i - 1][j]) % 1000000000;
}
}
std::cout << dp[n][k];
return (0);
}

ํ๊ธฐ
์ด์ฐ์ ์ฐ ๊ฐ์ ๊ตฌํด๋ด๊ธฐ๋ ํ๋๋ฐ.
์ด๋ฌํ ๊ทผ๊ฑฐ๋ฅผ ํตํด์ ๊ฐ์ ๋์ถํด๋ด๋๊ฒ์ด ์๋๋ผ "์๋ง ์ด๋ฐ์์ผ๋ก ์์ ์ ๊ฐํ๋ค๋ณด๋ฉด ์ด๋ ๊ฒ ๋์ค์ง์์๊น?" ํ๊ณ
์ด๋ฆผ์ง์ํด์ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ณผ์ ์ด ๋์ด ์์ฌ์์ด ๋ง์ด ๋จ๋ ๊ฑฐ ๊ฐ๋ค.
์ํ์ ๋ ๊ณต๋ถ๋ฅผ ํด๋ด์ผํ๋..
'Algorithm > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 18352๋ฒ - ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (C++) (0) | 2023.08.30 |
---|---|
[๋ฐฑ์ค] 1543๋ฒ - ๋ฌธ์ ๊ฒ์ (JS) (1) | 2023.08.28 |
[๋ฐฑ์ค] 2294๋ฒ - ๋์ 2 (C++) (0) | 2023.08.26 |
[๋ฐฑ์ค] 2293๋ฒ - ๋์ 1 (C++) (0) | 2023.08.26 |
[๋ฐฑ์ค] 1327๋ฒ - ์ํธ ๊ฒ์ (C++) (0) | 2023.08.24 |