Subarray Division 2 Hacker Rank Solution Best & Easiest

Subarray Division 2 Problem Solution
Subarray Division 2 Problem Solution

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