Container With Most Water

GAEEEGURI·2024년 12월 19일
0

leetcode

목록 보기
4/5

첫 번째 시도

러프하게 loop 두 개를 쓰면 풀 수 있다는 걸 알지만 왜인지 그러긴 싫은 느낌. 분명히 ponter 두 개를 이용할 것 같은데 조건을 어떻게 해야 될지 모르겠었다. 한 5분 고민하다 힌트를 봐버렸다. 그래도 양심상 3개중에 2개만 봤다.

class Solution:
    def maxArea(self, height: List[int]) -> int:
        ret = 0
        left = 0
        right = len(height) - 1

        while right > left:
            ret = max(ret, min(height[left],height[right])*(right-left))
            if height[left] > height[right]:
                right -= 1
            else:
                left += 1
        
        return ret

내가 고민하던 조건은 더 낮은 쪽에 있는 애를 옮기는 거였다. 넓이가 줄었음에도 저장공간이 넓어지는 상황을 찾기 위해서인 것 같다.

다른 사람들 코드와 gpt의 개선점도 확인해 보았는데 이게 가장 최적화된 코드라고 한다. 만약 그럼에도 최적화를 한다면

  • 변수명을 가독성 있게 바꾸거나
  • 부등호의 방향을 협업하는 사람들과 통일하는 것

정도이지 않을까 싶다.

앞으로는 문제를 풀 때에 다른 사람이 읽을 코드라고 생각하고 작성하는 연습을 해야겠다.

0개의 댓글