본문 바로가기

Computer Science/CODINGTEST_PRACTICE

[Leetcode/medium] 11. Container With Most Water

반응형

아마존 인터뷰 시리즈 중에 있어서 풀어봄

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

 

easy 문제인줄 알았는데 나중에 보니 medium문제네...

(그렇다고 쉽게 푼것도 아님)

 

막상 풀려고 보면 brute force로 푸는게 바로 생각남...

실제로 그렇게 푸는 문제는 거의 없으니 아닐게 분명하고..

 

힌트를 살짝 봤다

1번힌트: n^2은 아님 (.......그건 나도 알아....)

 

어쩔 수 없이 2번 힌트

2번힌트: 포인터 2개를 사용해서 값이 작은 쪽을 이동해라

 

아 듣는순간 해결방법이 바로 떠오름

좌우에서 그리디하게 현재 바가 더 짧은 것을 중앙쪽으로 이동시키면서 최대 면적을 탐색하면 되는구나...

최대 면적 탐색에서 순간순간 그리디한 선택을 하면서 굳이 확인해보지 않아도 되는 케이스는 건너 뛰는 방식

 

class Solution:
    def maxArea(self, height: List[int]) -> int:
        p1 = 0
        p2 = len(height) - 1
        
        max_area = 0
        while(p1 < p2):
            w = p2 - p1
            h = min(height[p1], height[p2])
            area = w * h
            max_area = max(max_area, area)
            
            if height[p1] < height[p2]:
                p1 += 1
            else:
                p2 -=1
            
        return max_area

 

오늘도 하나 배우고 갑니다...

반응형

'Computer Science > CODINGTEST_PRACTICE' 카테고리의 다른 글

[Leetcode/medium] 12. Integer to Roman  (0) 2024.04.14
35. Search Insert Position  (0) 2023.01.08
[LeetCode] 27. Remove Element  (0) 2023.01.06
[LeeCode] 53. Maximum Subarray  (0) 2022.12.18
[LeetCode] 217. Contains Duplicate  (0) 2022.12.18