-
[hackerrank] Candies python공부/알고리즘 2021. 9. 10. 14:24
1. candyList를 n사람 만큼 1로 초기화
2. for문을 한번 돌려서 arr[i] < arr[i+1] 일때, candyList[i+1] = candyList[i] + 1
3. 2번째 for문이 키포인트인데, 첫번째 for문에서 우측으로 arr가 높을때만 candy의 숫자를 늘려 주었는데, 1 2 3 4 3 2 1와 같은 케이스에서 좌측으로 갈때 arr이 커질때 처리를 해주어야 한다. 여기서, arr[i] < arr[i-1]의 판별은 당연히 생각나지만 candyList[i-1] <= candyList[i] 즉, 중복으로 candyList의 값을 증가를 방지한다.
# 5 4 3 -> 1 1 1 # 3 5 5 2 4 -> 1 2 1 1 2 # 1 2 3 4 3 2 1 -> 1 2 3 4 1 1 1 -> 1 2 3 4 3 2 1 def candies(n, arr): # Write your code here candyList = [1] * n for i in range(n-1): if arr[i] < arr[i+1]: candyList[i+1] = candyList[i] + 1 for i in range(n-1,0,-1): if arr[i] < arr[i-1] and candyList[i-1] <= candyList[i]: candyList[i-1] = candyList[i] + 1 return sum(candyList)
728x90'공부 > 알고리즘' 카테고리의 다른 글
[hackerrank] Missing Numbers python (0) 2021.09.11 [hackerrank] Ice Cream Parlor python (0) 2021.09.11 [hackerrank] Maximum Perimeter Triangle python (0) 2021.09.10 [hackerrank] Marc's Cakewalk python (0) 2021.09.10 [hackerrank] Grid Challenge python (0) 2021.09.10