https://www.acmicpc.net/problem/2225
๐ฉ๋ฌธ์

๐๋ฌธ์ ํด๊ฒฐ
N๊น์ง์ ์ ์๋ฅผ 0๊ฐ ๋ํด์ ๊ทธ ํฉ์ด 0์ด ๋๋ ๊ฒฝ์ฐ์ ์ 0์ k๋ฒ ๋ํ๋ ๋ฐฉ๋ฒ 1๊ฐ๋ฐ์ ์๋ค.
k=1์ผ ๊ฒฝ์ฐ N๊น์ง์ ์ ์๋ฅผ 1๊ฐ ๋ํด์ ๊ทธ ํฉ์ด N์ด ๋๋ ๊ฒฝ์ฐ์ ์
=> ์๊ธฐ ์์ ๋ง ๊ฐ์ง. 1๊ฐ
=> dp[k+1][n+1] ์ ํฌ๊ธฐ์ผ ๊ฒฝ์ฐ dp[1]์ 1๋ก ์ฑ์์ค๋ค.
- N=1์ผ๋
- k=1 : 1 :: 1๊ฐ์ง
- k=2 : 1+0 , 0+1 :: 2๊ฐ์ง
- k=3 : 1+0+0 , 0+1+0, 0+0+1 :: 3๊ฐ์ง
- N=2 ์ผ๋
- k=1 : 2 :: 1๊ฐ์ง
- k=2 : 2+0 , 0+2,1+1 :: 3๊ฐ์ง
- k=3 : 1+1+0 , 1+0+1, 0+1+1 ,2+0+0,0+2+0,0+0+2 :: 6๊ฐ์ง
- N=3 ์ผ๋
- k=1 : 3 :: 1๊ฐ์ง
- k=2 : 3+0 ,0+3,1+2,2+1 :: 4๊ฐ์ง
- k=3 : 1+1+1,1+2+0,2+1+0,1+0+2, 2+0+1, 0+1+2, 0+2+1, 3+0+0, 0+3+0, 0+0+3 :: 10๊ฐ์ง
| k \ n | 0 | 1 | 2 | 3 |
| 1 | dp[1][0] = 1 | dp[1][1] = 1 | dp[1][2] = 1 | dp[1][3] = 1 |
| 2 | dp[2][0] = 1 | dp[2][1] = dp[2][0]+dp[1][1] =dp[1][0]+dp[1][1] |
dp[2][2] =dp[2][1]+dp[1][2] |
dp[2][3] =dp[2][2]+dp[1][3] |
| 3 | dp[3][0] = 1 | dp[3][1] = dp[3][0]+[2][1] |
dp[3][2] =dp[3][1] +dp[2][2] |
dp[3][3] =dp[3][2]+d[2][3] |
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int mod = 1000000000; //๋๋ ์ ์ถ๋ ฅํด์ผํ๋์๋ฅผ ๋ณ์๋ก ์ง์ ํด์ค
int n= sc.nextInt();
int k= sc.nextInt();
int [][]dp= new int[k+1][n+1]; //๋ฒ์๊ฐ 0๋ถํฐ ์์
Arrays.fill(dp[1], 1); //k=1์ธ๊ฒฝ์ฐ ์๊ธฐ์์ ๋ฟ์
for (int i = 1; i <= k; i++) dp[i][0] = 1; //0๋ง ๊ณ์ ๋ํด์ง๋ฏ๋ก ๊ฒฝ์ฐ์ ์ 1๊ฐ
for (int i = 2; i <= k; i++) {
for (int j = 1; j <= n; j++) {
dp[i][j] = (dp[i-1][j] + dp[i][j-1]) % mod;
}
}
System.out.println(dp[k][n]);
}
}'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java]BOJ 1351 : ๋ฌดํ ์์ด (1) | 2025.02.21 |
|---|---|
| [Java]BOJ 1654 : ๋์ ์๋ฅด๊ธฐ (0) | 2025.01.15 |
| [Java]BOJ 2776 : ์๊ธฐ์ (0) | 2025.01.13 |
| [Java]BOJ 1388 : ๋ฐ๋ฅ์ฅ์ (0) | 2024.12.07 |
| [Java]BOJ 1026 : ๋ณด๋ฌผ (0) | 2024.12.06 |