Menu
CoddyTech

Container With Most Water

음이 아닌 정수 목록 height가 주어집니다. i번째 선은 위치 i에 세워진 높이 height[i]의 수직 벽입니다. 임의의 두 선은 땅과 함께 용기를 이루며, 짧은 선의 높이에 두 선 사이의 거리를 곱한 만큼의 물을 담을 수 있습니다. 다른 선들은 방해가 되지 않습니다. 한 쌍의 선이 담을 수 있는 최대 물의 양을 반환하세요.

함수

maxArea(height: integer-array) → integer
heightinteger-array
위치 0, 1, 2 등에서의 선 높이
반환값integer
두 줄에 담을 수 있는 최대 물의 양

제약 조건

  • 2 ≤ height.length ≤ 104
  • 0 ≤ height[i] ≤ 104
  • 정답은 최대 108이므로 32비트 정수에 들어갑니다.

예제

입력
height = [3, 7, 2, 5, 4, 7, 3, 6]
출력
36
설명
위치 1과 7에 있는 선의 높이는 각각 7과 6이고 서로 6만큼 떨어져 있으므로, 담을 수 있는 물은 6 × 6 = 36입니다. 가장 높은 두 선인 위치 1과 5의 7은 7 × 4 = 28만 담을 수 있고, 가장 바깥쪽 쌍은 3 × 7 = 21을 담습니다.

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

challenge icon

후속 질문

여기서는 네가 선택한 두 선 사이의 선들이 무시됩니다. 모든 선이 단단한 막대라면, 그 모든 선 사이에 물이 얼마나 고일까요? 이것도 O(n)에 계산할 수 있나요?

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

케이스 1

케이스 2

입력

height = [3, 7, 2, 5, 4, 7, 3, 6]

기대값

36