Skip to content

Commit 1f4c83d

Browse files
authored
[20250204] BOJ / 골드4 / 파이프 옮기기2 / 이강현
1 parent 08a95ce commit 1f4c83d

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
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+
```

0 commit comments

Comments
 (0)