-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDayTen.java
70 lines (62 loc) · 2.29 KB
/
DayTen.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.io.*;
import java.util.*;
public class DayTen {
private static Integer height;
private static Integer width;
private static Integer searchAt(int[][] map, Integer curX, Integer curY, Integer altitude, Integer rating){
if (curX > 0 && altitude - map[curX - 1][curY] == -1){
rating = (searchAt(map, curX-1, curY, map[curX - 1][curY], rating));
}
if (curY > 0 && altitude - map[curX][curY - 1] == -1){
rating = (searchAt(map, curX, curY - 1, map[curX][curY - 1], rating));
}
if (curX < width -1 && altitude - map[curX + 1][curY] == -1){
rating = (searchAt(map, curX + 1, curY, map[curX + 1][curY], rating));
}
if (curY < height - 1 && altitude - map[curX][curY + 1] == -1){
rating = (searchAt(map, curX, curY + 1, map[curX][curY + 1], rating));
}
if(map[curX][curY] == 9){
return rating += 1;
} else{
return rating;
}
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
try {
File inputFile = new File("input.txt");
input = new Scanner(inputFile);
height = 0;
while (input.hasNextLine()) {
height += 1;
input.nextLine();
}
input = new Scanner(inputFile);
String line = input.nextLine();
width = line.length();
int[][] map = new int[width][height];
Integer currentY = -1;
input = new Scanner(inputFile);
while (input.hasNextLine()) {
line = input.nextLine();
currentY += 1;
for(int i=0; i<line.length(); i++){
map[currentY][i] = Integer.parseInt("" + line.charAt(i));
}
}
input.close();
Integer sum = 0;
for(int curX = 0; curX < width; curX++) {
for(int curY = 0; curY < height; curY++){
if (map[curX][curY] == 0) {
sum += searchAt(map, curX, curY, map[curX][curY], 0);
}
}
}
System.out.println(sum);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}