Skip to content

Commit d68362d

Browse files
authored
[20250210] BOJ / G1 / 계단 수 / 신희을
1 parent 5db49bd commit d68362d

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
```java
2+
import java.util.*;
3+
4+
import java.io.*;
5+
6+
public class Main {
7+
8+
static long[][][] dp;
9+
static int N;
10+
static final long MOD = 1000000000L;
11+
12+
public static void main(String[] args) throws Exception {
13+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
14+
15+
N = Integer.parseInt(br.readLine());
16+
if (N <= 9) {
17+
System.out.println(0);
18+
return;
19+
}
20+
21+
// i는 현재 길이
22+
// j는 마지막 값
23+
// k는 현재 방문 값
24+
dp = new long[N + 1][10][(1 << 10)];
25+
26+
for(int i = 1; i < 10; i++) {
27+
dp[1][i][(1 << i)] = 1;
28+
}
29+
30+
for(int i = 2; i <= N; i++) {
31+
for(int j = 0; j < 10; j++) {
32+
for(int k = 0; k < (1 << 10); k++) {
33+
if(j == 0) dp[i][j][k | ( 1 << j)] += dp[i - 1][j + 1][k] %MOD;
34+
else if(j == 9) dp[i][j][k | ( 1 << j)] += dp[i-1][j - 1][k] %MOD;
35+
else dp[i][j][k | ( 1 << j)] += (dp[i-1][j-1][k] + dp[i-1][j+1][k]) %MOD;
36+
}
37+
}
38+
}
39+
40+
long sum = 0;
41+
42+
for(int j = 0; j < 10; j++) {
43+
sum += dp[N][j][(1<< 10) - 1] %MOD;
44+
}
45+
46+
System.out.println(sum % MOD);
47+
48+
}
49+
50+
}
51+
52+
```

0 commit comments

Comments
 (0)