File tree Expand file tree Collapse file tree 1 file changed +52
-0
lines changed
Expand file tree Collapse file tree 1 file changed +52
-0
lines changed Original file line number Diff line number Diff line change 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+ ```
You can’t perform that action at this time.
0 commit comments