PS/LeetCode

Container With Most Water

Hamp 2025. 1. 12. 19:53
반응형

문제

https://leetcode.com/problems/container-with-most-water/description/

입력

n == height.length
2 <= n <= 105
0 <= height[i] <= 10^4

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

결과

ans: Int = 물을 담을 수 있는 최대 면적

해석

백준에서 풀어봤던 기억이 있었던 것 같다.

위 문제 역시 전형적인 투 포인터 형식이므로 포인터를 이동시키는 조건을 빠르게 찾는다.

두 포인터를 양쪽 끝에 위치 시키고 높이가 낮은 것을 옮긴다.

 

이유는 담을 수 있는 높이는 두 높이 중 최소 높이로 측정되므로 낮은 높이를 옮겨 다음 검사에서는 더 높은
높이를 확보하는 것 

코드

class Solution {
    func maxArea(_ height: [Int]) -> Int {
        let n = height.count 
        var l = 0 
        var r = n - 1
        var ans: Int = 0

        while l < r {
            let w = (r-l)
            let h = min(height[l], height[r])
            ans = max(ans, w * h)

            if height[l] < height[r] {
                l += 1 
            } else {
                r -= 1
            }
        }

        return ans
    }
}

 

반응형