-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHackerrankPsAlgorithms0057.java
More file actions
81 lines (70 loc) · 2.48 KB
/
HackerrankPsAlgorithms0057.java
File metadata and controls
81 lines (70 loc) · 2.48 KB
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
71
72
73
74
75
76
77
78
79
80
81
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class HackerrankPsAlgorithms0057 {
// Cavity Map
// https://www.hackerrank.com/challenges/cavity-map/problem?isFullScreen=true
// --- You need to fill this method ---
public static List<String> cavityMap(List<String> grid) {
List<String> resultGrid = new ArrayList<>();
List<List<String>> gridList = new ArrayList<>();
gridList.addAll(grid.stream().map(x -> Arrays.asList(x.split(""))).collect(Collectors.toList()));
for (int i = 0; i < gridList.size(); i++) {
if (i == 0 || i == gridList.size() - 1) {
resultGrid.add(grid.get(i));
continue;
} else {
List<String> gridListItem = gridList.get(i);
StringBuilder tmpValue = new StringBuilder();
for (int j = 0; j < gridListItem.size(); j++) {
int currentValue = Integer.parseInt(gridListItem.get(j));
if (j == 0 || j == gridListItem.size() - 1) {
tmpValue.append(gridListItem.get(j));
} else {
int rightValue = Integer.parseInt(gridListItem.get(j + 1));
int leftValue = Integer.parseInt(gridListItem.get(j - 1));
int topValue = Integer.parseInt(gridList.get(i - 1).get(j));
int bottomValue = Integer.parseInt(gridList.get(i + 1).get(j));
if (currentValue > rightValue &&
currentValue > leftValue &&
currentValue > topValue &&
currentValue > bottomValue) {
tmpValue.append("X");
} else {
tmpValue.append(gridListItem.get(j));
}
}
}
resultGrid.add(tmpValue.toString());
}
}
return resultGrid;
}
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
int n = Integer.parseInt(bufferedReader.readLine().trim());
List<String> grid = IntStream.range(0, n).mapToObj(i -> {
try {
return bufferedReader.readLine();
} catch (IOException ex) {
throw new RuntimeException(ex);
}
})
.collect(Collectors.toList());
List<String> result = cavityMap(grid);
bufferedWriter.write(
result.stream()
.collect(Collectors.joining("\n"))
+ "\n");
bufferedReader.close();
bufferedWriter.close();
}
}