An avid hiker keeps meticulous records of their hikes. During the last hike that took exactly steps, for every step it was noted if it was an uphill, , or a downhill, step. Hikes always start and end at sea level, and each step up or down represents a unit change in altitude. We define the following terms:
A mountain is a sequence of consecutive steps above sea level, starting with a step up from sea level and ending with a step down to sea level.
A valley is a sequence of consecutive steps below sea level, starting with a step down from sea level and ending with a step up to sea level.
Given the sequence of up and down steps during a hike, find and print the number of valleys walked through.
Example
The hiker first enters a valley units deep. Then they climb out and up onto a mountain units high. Finally, the hiker returns to sea level and ends the hike.
Function Description
Complete the countingValleys function in the editor below.
countingValleys has the following parameter(s):
int steps: the number of steps on the hike
string path: a string describing the path
Returns
int: the number of valleys traversed
Input Format
The first line contains an integer , the number of steps in the hike.
The second line contains a single string , of characters that describe the path.
Constraints
Sample Input
8
Sample Output
1
Explanation
If we represent _ as sea level, a step up as /, and a step down as \, the hike can be drawn as:
_/\ _ \ / \/\/
The hiker enters and leaves one valley.
Counting Valleys HackerRank Solution in C
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int n;
scanf("%i", &n);
char str[n];
scanf("%s", str);
int level = 0, result = 0, valley = 0;
for (int i = 0; i < n; i++) {
if(str[i] == 'U') {
level++;
if(level == 0 && valley) {
valley = 0;
result++;
}
}
else if(str[i] == 'D') {
if(level == 0)
valley = 1;
level--;
}
}
printf("%i", result);
return 0;
}
Counting Valleys HackerRank Solution in C++
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int l;
string str; cin>>l>>str;
int height = 0;
int count = 0;
for(int i=0;i<l;i++){
if (str[i]=='U') height++;
else {
if (height==0) count++;
height--;
}
}
if (height<0) count--;
cout<<count<<endl;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
String str = in.next();
new Solver().solve(str);
}
}
class Solver {
public void solve (String str) {
int currLevel = 0;
int valley = 0;
boolean isFound = false;
for (int i=0; i<str.length(); i++) {
if (str.charAt(i) == 'U') {
currLevel++;
} else {
currLevel--;
}
if (currLevel < 0){
isFound = true;
}
if (currLevel >= 0 && isFound) {
isFound = false;
valley++;
}
}
System.out.println(valley);
}
}
Counting Valleys HackerRank Solution in Python
n = raw_input()
l = raw_input().strip().lower()
valleys = 0
level = 0
for i in xrange(len(l)):
if level == 0 and l[i] == 'd':
valleys += 1
if l[i] == 'u':
level += 1
else:
level -= 1
print valleys
Attempt Counting Valleys HackerRank Challenge
Link – https://www.hackerrank.com/challenges/counting-valleys
Next HackerRank Challenge Solution
Link – https://exploringbits.com/electronics-shop-hackerrank-solution/
Aayush Kumar Gupta is the founder and creator of ExploringBits, a website dedicated to providing useful content for people passionate about Engineering and Technology. Aayush has completed his Bachelor of Technology (Computer Science & Engineering) from 2018-2022. From July 2022, Aayush has been working as a full-time Devops Engineer.