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

Twitter, Facebook

To learn more about solving Coding Challenges in Python, I recommend these courses: Educative.io Python Algorithms, Educative.io Python Coding Interview.