문제 링크 (opens new window)

# 문제 설명

  1. 투포인터로 풀이
  2. 가로길이를 초기에 최대로 잡아둔다.
  3. 가로길이가 최대인 상태에서 물의 양이 늘어날 수 있는 변수는 높이값밖에 존재하지 않기 때문에, 양쪽 포인터 중 안쪽으로 이동했을 때 높이값이 증가하는 경우만 체크한다.
class Solution {
    func maxArea(_ height: [Int]) -> Int {
        var left = 0
        var right = height.count - 1
        var result = min(height[left], height[right]) * (right - left)

        while(left < right) {
            result = max(result, min(height[left], height[right]) * (right - left))
            if height[left] < height[right] {
                left += 1
            } else {
                right -= 1
            }
        }
        return result
    }
}