In this post, we will solve Subarray Division 2 HackerRank Solution. This problem (Subarray Division 2) is a part of the HackerRank Problem Solving series.
Subarray Division 2 Hacker Rank Problem:
Two children, Lily and Ron, want to share a chocolate bar. Each of the squares has an integer on it.
Lily decides to share a contiguous segment of the bar selected such that:
- The length of the segment matches Ron’s birth month, and,
- The sum of the integers on the squares is equal to his birth day.
Determine how many ways she can divide the chocolate.
Example
s = [2, 2, 1, 3, 2]
d = 4
m = 2
Lily wants to find segments summing to Ron’s birth day, d = 4 with a length equalling his birth month, m = 2. In this case, there are two segments meeting her criteria: [2, 2] and [1, 3].
Function Description
Complete the birthday function in the editor below.
birthday has the following parameter(s):
- int s[n]: the numbers on each of the squares of chocolate
- int d: Ron’s birth day
- int m: Ron’s birth month
Returns
- int: the number of ways the bar can be divided
Input Format
The first line contains an integer n, the number of squares in the chocolate bar.
The second line contains n space-separated integers s[i], the numbers on the chocolate squares where 0 <= i < n.
The third line contains two space-separated integers, d and m, Ron’s birth day and his birth month.
Constraints
- 1 <= n <= 100
- 1 <= s[i] <= 5, where (0 <= i < n)
- 1 <= d <= 31
- 1 <= m <= 12
Subarray Division 2 Hacker Rank Solution
Problem solution in Java programming:
public static int birthday(List<Integer> s, int d, int m) { int windowLength = m; int sum = 0; int count = 0; int j =0; while(j <= s.size() - windowLength){ sum =0; for(int i =j; i< j + windowLength; i++){ sum += s.get(i); } if(sum == d){ count++; } j++; } return count; }
Problem solution in JavaScript programming:
function birthday(s, d, m) { // Write your code here let sum = 0, c = 0, i = 0, j = m; while(j <= s.length){ for(let x=i; x<j;x++){ sum += s[x] } sum == d && c++; i++;j++; sum = 0 } return c; }
Problem solution in Python programming:
def birthday(s, d, m): # Write your code here left=0 count=0 for right in range(m-1,len(s)): if sum(s[left:right+1])==d: count+=1 left+=1 return count
Leave a Reply