11. Container With Most Water

Taesoo Kim·2023년 2월 3일
0

CrackingAlgorithm

목록 보기
18/36

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

계속되는 투포인터 파기

Problem

리스트 안에 벽의 높이가 주어진다. 그 중 물을 가득 담았을때 최대 부피를 갖는 두 벽을 찾으면 된다.

예를 들어,

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

라는 리스트가 주어졌을때, 두번째와 마지막 벽을 고르면 물을 최대로 담을 수 있게된다.

Approach & Solution

이번엔 미디엄 문제여서인지, 조금은 쉽게 푼 느낌이다.

class Solution:
    def maxArea(self, height: List[int]) -> int:

        left, right = 0, len(height) - 1

        max_volume = 0

        while left < right:
            min_height = min(height[right], height[left])
            length = right - left
            volume = min_height * length
            max_volume = max(max_volume, volume)

            if height[left] < height[right]:
                left += 1
            else:
                right -= 1

        return max_volume

        

지금까지는, 투포인터가 두개로 나뉘는것 같다. 포인터 둘다 한곳에서 시작하는 유형과, 포인터들이 각 끝에서 시작 하는 유형.
투포인터 문제라고 확신이 들면, 두가지 경우를 모두 생각해봐야겠다.

지금까지 푼 투포인터들 한번 정리하고 가는것도 좋을지도..?

profile
SailingToTheMoooon

0개의 댓글