끄적거림

[HackerRank] Counting Valleys 본문

Python/알고리즘(코딩테스트)

[HackerRank] Counting Valleys

Signing 2022. 6. 28. 21:30
728x90
반응형

문제

문제를 요약하자면, path로 주어지는 문자열이 있는데, U = Up-hill(+1), D = Down-hill(-1)이다.

해수면(0)을 기준으로 양수면 산, 음수면 계곡이다.

이때 계곡의 갯수를 반환하면 된다.

 

코드

# import numpy as np
import collections as co
"""
- steps : 총 걸음 수
- path : 걸음의 자취 문자열
"""

def countingValleys(steps, path):
    pl = list(path)
    res = 0
    stus = 0

    cumsum = co.deque([])

    for i in range(steps):
        hike = pl[i]

        if hike == 'U':     # up-hill
            stus += 1
        else:               # down-hill
            stus -= 1
        cumsum.append(stus)
        print(cumsum)

        if (i > 0) and (stus == 0) and (cumsum[i-1] < 0):
            res += 1

    return res

if __name__ == '__main__':

    steps = 8
    path = "UDDDUDUU"

    result = countingValleys(steps, path)

    print(result)

풀이해설

  1. path 문자열을 list로 변환
  2. path list를 순회하며, 누적 합을 cumsum list에 넣는다.
  3. cumsum의 이전 원소값이 음수이고, 현재 원소값이 0이면 계곡으로 간주하여 +1씩 결과값을 더해 나감 
728x90
반응형
Comments