Given a 2D Array, :
1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
An hourglass in is a subset of values with indices falling in this pattern in 's graphical representation:
a b c
d
e f g
There are hourglasses in . An hourglass sum is the sum of an hourglass' values. Calculate the hourglass sum for every hourglass in , then print the maximum hourglass sum. The array will always be .
Example
-9 -9 -9 1 1 1
0 -9 0 4 3 2
-9 -9 -9 1 2 3
0 0 8 6 6 0
0 0 0 -2 0 0
0 0 1 2 4 0
The hourglass sums are:
-63, -34, -9, 12,
-10, 0, 28, 23,
-27, -11, -2, 10,
9, 17, 25, 18
The highest hourglass sum is from the hourglass beginning at row , column :
0 4 3
1
8 6 6
Note: If you have already solved the Java domain's Java 2D Array challenge, you may wish to skip this challenge.
Function Description
Complete the function hourglassSum in the editor below.
hourglassSum has the following parameter(s):
- int arr[6][6]: an array of integers
Returns
- int: the maximum hourglass sum
Input Format
Each of the lines of inputs contains space-separated integers .
Constraints
Output Format
Print the largest (maximum) hourglass sum found in .
Sample Input
1 1 1 0 0 0
0 1 0 0 0 0
1 1 1 0 0 0
0 0 2 4 4 0
0 0 0 2 0 0
0 0 1 2 4 0
Sample Output
19
Explanation
contains the following hourglasses:
The hourglass with the maximum sum () is:
2 4 4
2
1 2 4
Solution :
import java.io.*;import java.math.*;import java.security.*;import java.text.*;import java.util.*;import java.util.concurrent.*;import java.util.regex.*;
class Result {
/* * Complete the 'hourglassSum' function below. * * The function is expected to return an INTEGER. * The function accepts 2D_INTEGER_ARRAY arr as parameter. */
public static int hourglassSum(List<List<Integer>> arr) { // Write your code here int maxSum=-32565; for(int j=0;j<=3;j++) for(int i=0;i<=3;i++){ int line1 = arr.get(i).get(j) + arr.get(i).get(j+1) + arr.get(i).get(j+2); int line2 = arr.get(i+1).get(j+1); int line3 = arr.get(i+2).get(j) + arr.get(i+2).get(j+1) + arr.get(i+2).get(j+2); int sum = line1+line2+line3; if(sum>maxSum) maxSum=sum; } return maxSum;
}
}
public class Solution { 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")));
List<List<Integer>> arr = new ArrayList<>();
for (int i = 0; i < 6; i++) { String[] arrRowTempItems = bufferedReader.readLine().replaceAll("\\s+$", "").split(" ");
List<Integer> arrRowItems = new ArrayList<>();
for (int j = 0; j < 6; j++) { int arrItem = Integer.parseInt(arrRowTempItems[j]); arrRowItems.add(arrItem); }
arr.add(arrRowItems); }
int result = Result.hourglassSum(arr);
bufferedWriter.write(String.valueOf(result)); bufferedWriter.newLine();
bufferedReader.close(); bufferedWriter.close(); }}