Menu
CoddyTech

Trapping Rain Water

막대들이 나란히 늘어서 있으며, 각각의 너비는 1단위입니다. height[i]는 막대 i의 높이입니다. 빗물은 막대 사이의 낮은 곳에 고입니다. 더 높은 막대가 왼쪽 어딘가와 오른쪽 어딘가에 모두 있을 때만 막대 위에 물이 고이며, 첫 번째 막대와 마지막 막대 바깥으로는 물이 흘러내립니다. 이 줄에 담기는 물의 총 단위 수를 반환하세요.

함수

trap(height: integer-array) → integer
heightinteger-array
왼쪽에서 오른쪽으로 각 막대의 높이
반환값integer
갇힌 물의 총 단위 수

제약 조건

  • 1 ≤ height.length ≤ 2 × 104
  • 0 ≤ height[i] ≤ 105
  • 각 막대의 너비는 1단위이며, 물은 첫 번째 막대나 마지막 막대 너머에는 고이지 않습니다.

예제

입력
height = [0, 3, 1, 0, 2, 5, 1, 2]
출력
7
설명
3과 5 사이의 레벨은 3입니다. 1보다 2단위 위, 0보다 3단위 위, 2보다 1단위 위입니다. 뒤에 나오는 1은 5와 2 사이에 있으므로 1을 차지합니다. 그러면 7이 됩니다.
challenge icon

후속 질문

막대가 높이로 이루어진 2D 격자를 형성하고 물이 네 방향 모두로 빠져나갈 수 있다고 가정해 봅시다. 그렇다면 갇힌 물의 양을 어떻게 계산할까요?

코드 초기화
def trap(height):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자

height = [0, 3, 1, 0, 2, 5, 1, 2]

예상 출력

7