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,

**. In this case, there are two segments meeting her criteria:**

*m*= 2**[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

**space-separated integers**

*n***, the numbers on the chocolate squares where**

*s*[*i*]**0 <=**.

*i*<*n*The third line contains two space-separated integers,

**and**

*d***, Ron’s birth day and his birth month.**

*m***Constraints**

**1 <=***n*<= 100**1 <=**, where (*s*[*i*] <= 5**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