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