[Interview Preparation Kit] Warm-up-2

이희진·2022년 11월 23일
0

Problem

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
steps = 8
path = [DDUUUUDD]

returns
int: the number of valleys traversed

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.

My solution

#!/bin/python3

import math
import os
import random
import re
import sys

def countingValleys(steps, path):
    valley_flag = 0
    high = 0
    valley = 0
    for step in path:
        if step == 'U':
            high += 1
        else:
            high -= 1
        if high < 0:
            valley_flag = 1
        elif high >= 0 and valley_flag == 1:
            valley_flag = 0
            valley += 1
        else: pass
    return valley

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    steps = int(input().strip())

    path = input()

    result = countingValleys(steps, path)

    fptr.write(str(result) + '\n')

    fptr.close()

0개의 댓글