일단 물은 0번과 -1번 인덱스에는 찰 수 없다. 양 옆에 막아줄 빌딩이 없기 때문!
- 해당 인덱스 양 옆에 자신보다 큰 건물이 있으면 물이 들어감
- 자신의 왼쪽과 오른쪽 건물중에서 가장 큰 건물 중 제일 작은 건물의 높이가 물이 들어갈 수 있는 최대 높이임
- 최대 높이에서 자신의 높이를 빼주면?! 그 인덱스에 들어가는 물의 양이 됨!
def trapping_rain(buildings):
rain_container = []
for i in range(1,len(buildings)-1):
max_left = max(buildings[:i])
max_right = max(buildings[i:])
upperbound = min(max_left, max_right)
rain_container.append(max(0,upperbound-buildings[i]))
return sum(rain_container)
다시 혼자 풀어보라 하면 못풀거같긴한데.. 이미 풀어봤으니 기억해서 활용해 볼 수는 있을 것 같다!
'알고리즘 > 문제 풀이' 카테고리의 다른 글
2021-11-20 O(n)을 O(logn)으로 바꾸기 (0) | 2021.11.20 |
---|---|
2021-11-20 투자구간에서 최대수익 (0) | 2021.11.20 |
2021-10-09 가장 가까운 거리 구하기 반영환 (0) | 2021.10.11 |
2021-10-09 두 뭉치의 곱의 최댓값 반영환 (0) | 2021.10.11 |
2021-10-09 하노이탑 반영환 (0) | 2021.10.11 |