# HackerRank 'Counting Valleys' Solution

Martin Kysel · July 26, 2020

##### Short Problem Definition:

Gary is an avid hiker. He tracks his hikes meticulously, paying close attention to small details like topography. During his last hike he took exactly n steps. For every step he took, he noted if it was an uphill, U, or a downhill, D step. Gary’s hikes 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.

Counting Valleys

##### Complexity:

time complexity is `O(N)`

space complexity is `O(1)`

##### Execution:

I am a hiker myself, so this challenge is kinda funny. The description looks complex, but realistically one only needs to calculate whether the section was above or below sea level.

##### Solution:
``````def countingValleys(n, s):
level = 0
valleys = 0
for direction in s:
if direction == "U":
level += 1
if level == 0:
valleys += 1
else:
level -= 1

return valleys
``````