File tree Expand file tree Collapse file tree 1 file changed +76
-0
lines changed
Expand file tree Collapse file tree 1 file changed +76
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.util.Scanner ;
3+
4+ public class Main {
5+ public static void main (String [] args ) throws Exception {
6+ Scanner sc = new Scanner (System . in);
7+ int N = sc. nextInt();
8+ int [][] matrix = new int [N ][N ];
9+ long [][][] dp = new long [3 ][N ][N ]; // 0:가로 1:세로 2:대각선선
10+ for (int i = 0 ; i < N ; i++ ) {
11+ for (int j = 0 ; j < N ; j++ ) {
12+ matrix[i][j] = sc. nextInt();
13+ }
14+ }
15+ for (int i= 1 ;i< N ;i++ ){
16+ if (matrix[0 ][i] == 1 ){
17+ break ;
18+ }
19+ dp[0 ][0 ][i] = 1 ;
20+ }
21+
22+ for (int i = 1 ; i < N ; i++ ) {
23+ for (int j = 1 ; j < N ; j++ ) {
24+ if (matrix[i][j] == 1 ){
25+ dp[0 ][i][j] = 0 ;
26+ dp[1 ][i][j] = 0 ;
27+ dp[2 ][i][j] = 0 ;
28+ }
29+ else {
30+ boolean left = matrix[i][j- 1 ] == 0 ;
31+ boolean up = matrix[i- 1 ][j] == 0 ;
32+ boolean diagonal = matrix[i- 1 ][j- 1 ] == 0 ;
33+ if (left&& up&& diagonal){
34+ dp[0 ][i][j] = dp[0 ][i][j- 1 ] + dp[2 ][i][j- 1 ];
35+ dp[1 ][i][j] = dp[1 ][i- 1 ][j] + dp[2 ][i- 1 ][j];
36+ dp[2 ][i][j] = dp[0 ][i- 1 ][j- 1 ] + dp[1 ][i- 1 ][j- 1 ] + dp[2 ][i- 1 ][j- 1 ];
37+ }
38+ else if (left&& diagonal){
39+ dp[0 ][i][j] = dp[0 ][i][j- 1 ] + dp[2 ][i][j- 1 ];
40+ dp[1 ][i][j] = 0 ;
41+ dp[2 ][i][j] = 0 ;
42+ }
43+ else if (diagonal&& up){
44+ dp[0 ][i][j] = 0 ;
45+ dp[1 ][i][j] = dp[1 ][i- 1 ][j] + dp[2 ][i- 1 ][j];
46+ dp[2 ][i][j] = 0 ;
47+ }
48+ else if (left&& up){
49+ dp[0 ][i][j] = dp[0 ][i][j- 1 ];
50+ dp[1 ][i][j] = dp[1 ][i- 1 ][j];
51+ dp[2 ][i][j] = 0 ;
52+ }
53+ else if (left){
54+ dp[0 ][i][j] = dp[0 ][i][j- 1 ];
55+ dp[1 ][i][j] = 0 ;
56+ dp[2 ][i][j] = 0 ;
57+ }
58+ else if (up){
59+ dp[0 ][i][j] = 0 ;
60+ dp[1 ][i][j] = dp[1 ][i- 1 ][j];
61+ dp[2 ][i][j] = 0 ;
62+ }
63+ else {
64+ dp[0 ][i][j] = 0 ;
65+ dp[1 ][i][j] = 0 ;
66+ dp[2 ][i][j] = 0 ;
67+ }
68+ }
69+ }
70+ }
71+
72+ System . out. println(dp[0 ][N - 1 ][N - 1 ]+ dp[1 ][N - 1 ][N - 1 ]+ dp[2 ][N - 1 ][N - 1 ]);
73+ }
74+ }
75+
76+ ```
You can’t perform that action at this time.
0 commit comments