[Leet Code] Container With Most Water

김우경·2020년 12월 28일
0

알고리즘

목록 보기
33/69

투포인터 관련 문제를 더 풀어보고 싶어서 풀어봤다.

문제 링크

Container With Most Water

문제 설명

기둥의 높이가 리스트로 주어질때, 각 기둥은 (인덱스, 0)에 위치한다.
예를 들어 height = [1,8,6,2,5,4,8,3,7] 의 경우에는

와 같이 위치한다. 두 기둥을 벽으로 물을 담으려고 할 때 가장 많은 물을 담을 수 있는 두 기둥을 구하기

문제 풀이

투포인터를 활용해서 문제를 풀면 된다.
1. start와 end는 양 끝에서 시작
2. 해당 위치의 기둥을 벽으로 물 담을때의 부피 구하기
3. start위치의 기둥이 더 높으면 end를 앞으로, end위치의 기둥이 더 높으면 start를 뒤로 한칸 땡긴다.

class Solution(object):
   def maxArea(self, height):
       start = 0
       end = len(height)-1
       answer = 0
       
       while start < end:
           volume = min(height[start], height[end])*(end-start)
           answer = max(answer, volume)
           
           if height[start] > height[end]:
               end -= 1
           else:
               start += 1
           
       return answer

리트코드는 처음 풀어봤는데 ui도 예쁘고 좋은 것 같다 ㅎㅎ..

profile
Hongik CE

0개의 댓글