Source : https://www.hackerrank.com/challenges/30-2d-arrays
Objective
Today, we're building on our knowledge of Arrays by adding another dimension. Check out the Tutorial tab for learning materials and an instructional video!
Context
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
We define an hourglass in to be a subset of values with indices falling in this pattern in 's graphical representation:
a b c de f g
There are hourglasses in , and an hourglass sum is the sum of an hourglass' values.
Task
Calculate the hourglass sum for every hourglass in , then print the maximum hourglass sum.
Input Format
There are lines of input, where each line contains space-separated integers describing 2D Array ; every value in will be in the inclusive range of to .
Constraints
Output Format
Print the largest (maximum) hourglass sum found in .
Sample Input
1 1 1 0 0 00 1 0 0 0 01 1 1 0 0 00 0 2 4 4 00 0 0 2 0 00 0 1 2 4 0
Sample Output
19
Explanation
contains the following hourglasses:
1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 01 1 1 1 1 0 1 0 0 0 0 00 1 0 1 0 0 0 0 0 0 0 0 1 1 0 00 0 2 0 2 4 2 4 4 4 4 01 1 1 1 1 0 1 0 0 0 0 0 0 2 4 40 0 0 0 0 2 0 2 0 2 0 00 0 2 0 2 4 2 4 4 4 4 0 0 0 2 00 0 1 0 1 2 1 2 4 2 4 0
The hourglass with the maximum sum () is:
2 4 4 21 2 4
Source : https://www.hackerrank.com/challenges/30-2d-arrays
Solution
// Karthikalapati.blogspot.com | |
import java.util.Scanner; | |
public class Solution { | |
public static void main(String[] args) { | |
Scanner scan = new Scanner(System.in); | |
int arr[][] = new int[6][6]; | |
for (int row = 0; row < 6; row++) { | |
for (int col = 0; col < 6; col++) { | |
arr[row][col] = scan.nextInt(); | |
} | |
} | |
scan.close(); | |
System.out.println(maxHourglass(arr)); | |
} | |
public static int maxHourglass(int [][] arr) { | |
int max = Integer.MIN_VALUE; | |
for (int row = 0; row < 4; row++) { | |
for (int col = 0; col < 4; col++) { | |
int sum = findSum(arr, row, col); | |
max = Math.max(max, sum); | |
} | |
} | |
return max; | |
} | |
private static int findSum(int [][] arr, int r, int c) { | |
int sum = arr[r+0][c+0] + arr[r+0][c+1] + arr[r+0][c+2] | |
+ arr[r+1][c+1] + | |
arr[r+2][c+0] + arr[r+2][c+1] + arr[r+2][c+2]; | |
return sum; | |
} | |
} |
No comments:
Post a Comment