Skip to content

Commit a3185c6

Browse files
authored
Merge pull request #33 from AlgorithmWithGod/suyeun84
[20250204] BOJ / 골드4 / 파이프 옮기기2 / 김수연
2 parents 98f2478 + 4329d3e commit a3185c6

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
```java
2+
import java.util.*;
3+
import java.io.*;
4+
5+
class Solution
6+
{
7+
public static void main(String[] args) throws Exception{
8+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
StringTokenizer st = new StringTokenizer(br.readLine());
10+
11+
int N = Integer.parseInt(st.nextToken());
12+
long answer = 0;
13+
int[][] board = new int[N][N];
14+
long[][][] dp = new long[N][N][3];
15+
for (int i = 0; i < N; i++) {
16+
st = new StringTokenizer(br.readLine());
17+
for (int j = 0; j < N; j++) {
18+
board[i][j] = Integer.parseInt(st.nextToken());
19+
}
20+
}
21+
dp[0][1][0] = 1;
22+
if(board[1][2] == 0 && board[0][2] == 0 && board[1][1] == 0) dp[1][2][2] = 1;
23+
for (int i = 2; i < N; i++) {
24+
if(board[0][i] == 0) dp[0][i][0] = dp[0][i-1][0];
25+
if (i == 2) {
26+
if(board[i][2] == 0) dp[2][2][1] = dp[1][2][2];
27+
} else {
28+
if(board[i][2] == 0) dp[i][2][1] = dp[i-1][2][1];
29+
}
30+
}
31+
32+
for (int i = 1; i < N; i++) {
33+
for (int j = 3; j < N; j++) {
34+
if (board[i][j] == 1) continue;
35+
dp[i][j][0] = dp[i][j-1][0] + dp[i][j-1][2];
36+
dp[i][j][1] = dp[i-1][j][1] + dp[i-1][j][2];
37+
if (board[i-1][j] == 0 && board[i][j-1] == 0)
38+
dp[i][j][2] = dp[i-1][j-1][0] + dp[i-1][j-1][1] + dp[i-1][j-1][2];
39+
}
40+
}
41+
for (int i = 0; i < 3; i++) {
42+
answer += dp[N-1][N-1][i];
43+
}
44+
System.out.println(answer);
45+
}
46+
}
47+
48+
```

0 commit comments

Comments
 (0)