투포인터 관련 문제를 더 풀어보고 싶어서 풀어봤다.
기둥의 높이가 리스트로 주어질때, 각 기둥은 (인덱스, 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도 예쁘고 좋은 것 같다 ㅎㅎ..