leetcode

Leetcode 11 - Container with Most Water

monsangter 2023. 4. 24. 00:03


브루트포스

 

class Solution:
    def maxArea(self, height: List[int]) -> int:
        res = 0
        
        for l in range(len(height)):
            for r in range(l + 1, len(height)):
                area = (r - l) * min(height[l], height[r])
                res = max(res, area)
                
        return res

 

가능 한 모든 경우의 수를 판단한다. l , r포인터를 포문으로 이동하고 가능한 모든 조합에 대한 영역 값을 계산해 결과값 구함.

 

시간복잡도 n^2


 

포인터 활용 풀이

 

class Solution:
    def maxArea(self, height: List[int]) -> int:
        
        res = 0
        
        l,r = 0, len(height) - 1

        while l < r:
            area = (r - l ) * min(height[l], height[r])
            res = max(res, area)

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

        return res

양 끝단에서 포인터를 두고 시작한다. 그리고 양쪽 height중에서 더 작은 쪽의 포인터를 움직이며 max area를 갱신한다.