LeetCode

Doyeon Kim·2022년 3월 15일

코딩테스트 공부

목록 보기
33/171

문제 링크: https://leetcode.com/problems/container-with-most-water/


이해하느라 최종적으로 한 두세시간을 쓴 문제..

이 문제에서 특징은 가로(너비..?)는 크면 클 수록 좋고, 높이는 물이 넘치지 않게 하기 위해서 적은 숫자를 택하여야 한다.

class Solution:
   def maxArea(self, height: List[int]) -> int:
       l, r = 0, len(height)-1
       max_area=0
       
       while l<r:
           min_height= min(height[l],height[r])
           max_area=max(max_area,min_height*(r-l))
           
           if height[l]==min_height:
               l+=1
           else :
               r-=1
       
       
       return max_area

투포인터 알고리즘을 이용하면 일일이 모든 경우를 구해보지 않고도 더욱 빠르게 구해볼 수 있다.
높이는 두 막대기들 중에서 작은 것을 기준으로 하고, 너비(r-l)와 기준이 되는 막대기(min_height)를 곱한 총 넓이를 이전 값과 비교하여 더 큰 값으로 계속 업데이트(?)해준다.
그리고 최종적으로 가장 큰 넓이의 값을 답으로 한다.


2022.04.01.복습
높이는 낮은거 총 넓이는 가장 큰 거 라는 거 생각해냈음

profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글