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 사이에 있으므로, 물의 높이는 2이고 1단위의 물이 고입니다. 2 + 3 + 1 + 1 = 7.

lock icon제출 시 숨은 테스트 +17개

challenge icon

후속 질문

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

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

케이스 1

케이스 2

케이스 3

입력

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

기대값

7