ackerrank - Counting Valley


  • stepは2または100万以下
  • pathには、少なくとも2つのU、D文字が含まれている必要があります.
  • レベルが0であるかどうかを確認するのは、
  • 「U」文字のみです.残りのD文字の場合、levelが0であるかどうかを確認するのは無駄です(エラー)
  • def countingValleys(step, path):
        altitude = 0    # 고도    
        valley_num = 0  # 계곡 숫자(고도가 처음 음수로 바뀐이후 부터 다시 고도가 0이 되는 시점에 +1 증가)
        for i in range(step):
            if ('U'and 'D') in path:   # path가 모두 'DDDDDDDD' 채워지면 제약 조건을 위반함
                if path[i] == 'U':     #
                    altitude += 1
                    if altitude == 0:  # 고도가 0보다 작은 상태였다가 다시 0으로 바뀌는 시점인지 판단함
                        valley_num += 1
                elif path[i] == 'D':
                    altitude -= 1
        return valley_num
    
    
    
    path = 'DUDUDU'
    step = len(path)
    result = countingValleys(step, path)
    print(result)