Skip to content

Commit 32b0ea3

Browse files
authored
Merge pull request #1512 from AlgorithmWithGod/Seol-JY
[20251125] BOJ / G3 / 색상환 / 설진영
2 parents 22ac3f0 + 34a6a43 commit 32b0ea3

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
```java
2+
import java.util.*;
3+
4+
public class Main {
5+
static final int MOD = 1000000003;
6+
7+
public static void main(String[] args) {
8+
Scanner sc = new Scanner(System.in);
9+
int N = sc.nextInt();
10+
int K = sc.nextInt();
11+
12+
if (K * 2 > N) {
13+
System.out.println(0);
14+
return;
15+
}
16+
17+
if (K == 1) {
18+
System.out.println(N);
19+
return;
20+
}
21+
22+
long case1 = solve(N - 3, K - 1);
23+
long case2 = solve(N - 1, K);
24+
25+
long answer = (case1 + case2) % MOD;
26+
System.out.println(answer);
27+
}
28+
29+
static long solve(int n, int k) {
30+
if (n < 0 || k < 0) return 0;
31+
if (k == 0) return 1;
32+
if (n < k) return 0;
33+
if (k * 2 - 1 > n) return 0;
34+
35+
long[][] dp = new long[n + 1][k + 1];
36+
37+
dp[0][0] = 1;
38+
if (n >= 1) {
39+
dp[1][0] = 1;
40+
dp[1][1] = 1;
41+
}
42+
43+
for (int i = 2; i <= n; i++) {
44+
dp[i][0] = 1;
45+
for (int j = 1; j <= Math.min(i, k); j++) {
46+
dp[i][j] = (dp[i - 1][j] + dp[i - 2][j - 1]) % MOD;
47+
}
48+
}
49+
50+
return dp[n][k];
51+
}
52+
}
53+
```

0 commit comments

Comments
 (0)