# Jumping on the Clouds – HackerRank Solution

In this post, we will solve Jumping on the Clouds HackerRank Solution. This problem (Jumping on the Clouds) is a part of HackerRank Algorithms series.

There is a new mobile game that starts with consecutively numbered clouds. Some of the clouds are thunderheads and others are cumulus. The player can jump on any cumulus cloud having a number that is equal to the number of the current cloud plusÂ 1Â orÂ 2. The player must avoid the thunderheads. Determine the minimum number of jumps it will take to jump from the starting postion to the last cloud. It is always possible to win the game.

For each game, you will get an array of clouds numberedÂ 0Â if they are safe orÂ 1Â if they must be avoided.

Example
c = [0, 1, 0, 0, 0, 1, 0]

Index the array fromÂ 0 . . . 6. The number on each cloud is its index in the list so the player must avoid the clouds at indicesÂ 1Â andÂ 5. They could follow these two paths:Â 0 -> 2 -> 4 -> 6Â orÂ 0 -> 2 -> 3 -> 4 – > 6. The first path takesÂ 3Â jumps while the second takesÂ 4. ReturnÂ 3.

Function Description

Complete the jumpingOnClouds function in the editor below.

jumpingOnClouds has the following parameter(s):

• int c[n]: an array of binary integers

Returns

• int:Â the minimum number of jumps required

## Input Format

The first line contains an integerÂ n, the total number of clouds. The second line containsÂ nÂ space-separated binary integers describing cloudsÂ c[i]Â whereÂ 0 <= i < n.

## Constraints

• 2 <= n <= 100
• c[i] = {0, 1}
• c[0] = c[n – 1] = 0

## Output Format

Print the minimum number of jumps needed to win the game.

Sample Input 0

``````7
0 0 1 0 0 1 0``````

Sample Output 0

``4``

Explanation 0

The player must avoidÂ c[2]Â andÂ c[5]. The game can be won with a minimum ofÂ 4Â jumps:

Sample Input 1

``````6
0 0 0 0 1 0``````

Sample Output 2

``3``

Explanation 1

The only thundercloud to avoid isÂ c[4]. The game can be won inÂ 3Â jumps:

## Solution – Jumping on the Clouds – HackerRank Solution

### C++

```#include<bits/stdc++.h>

using namespace std;

int a[100], dp[100];

int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", a + i);

dp[0] = 0;
for (int i = 1; i < n; i++) {
dp[i] = dp[i - 1] + 1;
if (i > 1) dp[i] = min(dp[i], dp[i - 2] + 1);

if (a[i] == 1) dp[i] = n + 1;
}

printf("%d\n", dp[n - 1]);

return 0;
}
```

### Python

```#!/bin/python3

import sys

def jump(c):
res = 0
ind = 0

while ind != len(c)-1:
if ind != len(c)-2 and c[ind+2] == 0:
ind += 2
else:
ind += 1
res += 1

return res

if __name__ == "__main__":
n = int(input().strip())
c = list(map(int, input().strip().split(' ')))
result = jump(c)
print(result)
```

### Java

```import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int rounds = input.nextInt();
int[] ar = new int[rounds];
int i = 0;
for(i = 0; i < rounds; i++)
ar[i] = input.nextInt();
int count = 0;
i = 0;
while(i != rounds-1)
{
if(i != ar.length - 2 && ar[i+2] == 0)
i+=2;
else
i++;
count++;
}
System.out.println(count);
}
}
```

Note: This problem (Jumping on the Clouds) is generated by HackerRank but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.