Skip to content

Commit f42e9b4

Browse files
committed
chore: Programmers DP
1 parent 9b31c3b commit f42e9b4

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package algorithm_sites.programmers.kit202212;
2+
3+
import static java.lang.System.out;
4+
5+
import java.util.Arrays;
6+
7+
public class Programmers_DynamicProgramming_03 {
8+
9+
public int solution(int m, int n, int[][] puddles) {
10+
int[][] plates = new int[n][m];
11+
int mod = 1_000_000_007;
12+
plates[0][0] = 1;
13+
14+
for (int[] puddle : puddles) {
15+
plates[puddle[1] - 1][puddle[0] - 1] = -1;
16+
}
17+
18+
for (int i = 0; i < plates.length; ++i) {
19+
for (int j = 0; j < plates[i].length; ++j) {
20+
if (plates[i][j] == -1) {
21+
plates[i][j] = 0;
22+
continue;
23+
}
24+
25+
if (!(i == 0 && j == 0)) {
26+
int left = 0;
27+
int up = 0;
28+
29+
if (j > 0) {
30+
left = plates[i][j-1];
31+
}
32+
if (i > 0) {
33+
up = plates[i-1][j];
34+
}
35+
36+
plates[i][j] = (up+left) % mod;
37+
}
38+
}
39+
}
40+
41+
// out.println("\n\nnext");
42+
// for (int[] plate : plates) {
43+
// for (int i : plate) {
44+
// out.print(i + " ");
45+
// }
46+
// out.println();
47+
// }
48+
49+
return plates[n-1][m-1] % mod;
50+
}
51+
52+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package algorithm_sites.programmers.kit202212;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import org.junit.jupiter.api.Test;
6+
7+
class Programmers_DynamicProgramming_03Test {
8+
9+
private Programmers_DynamicProgramming_03 programmers_dynamicProgramming_03 = new Programmers_DynamicProgramming_03();
10+
11+
@Test
12+
void solutionTest1() {
13+
int m = 4;
14+
int n = 3;
15+
int[][] puddles = new int[][] {{2, 2}};
16+
17+
int result = programmers_dynamicProgramming_03.solution(m, n, puddles);
18+
19+
assertThat(result).isEqualTo(4);
20+
}
21+
22+
}

0 commit comments

Comments
 (0)