CK 025 | Week2 - Day5
문제
인자인 height는 숫자로 이루어진 배열입니다.그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다.
아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.
저 그래프에 물을 담는다고 생각하고, 물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.
제한사항
배열의 길이는 2 이상입니다.
내가 작성한 코드
def get_max_area(height):
left = 0
right = len(height)-1
area = 0
while left < right :
area = max(area, min(height[left], height[right])*(right-left))
if height[right] > height[left] :
left += 1
else :
right -=1
return area
def get_max_area(height):
left = 0
right = len(height)-1
area = 0
while left < right :
area = max(area, min(height[left], height[right])*(right-left))
if height[right] > height[left] :
left += 1
else :
right -=1
return area
물을 담을 수 있는 최대 넓이를 구하는 것이므로
높이를 양쪽 끝에서 부터 비교를 해야한다. 높이는 둘 중 더 낮은것이 높이이고, 밑 변은 오른쪽 인덱스 번호
- 왼쪽 인덱스 번호
이다.
위 사진을 예로 들면,
높이는 왼쪽이 더 높지만 오른쪽은 왼쪽에 비해 높이가 낮다. 오른쪽을 넘어서는 높이로 물을 담을 수는 없기때문에
왼쪽과 오른쪽중 최솟값
을 물을 담을 수 있는 높이로 지정한다.
오른쪽과 왼쪽이 만나지 않을때 까지 최대 넓이를 구한다.
이때 오른쪽의 높이가 왼쪽의 높이보다 크다면 왼쪽 인덱스 번호를 증가시키고, 왼쪽이 더 크다면 오른쪽 인덱스 번호 감소시킨다.
Author And Source
이 문제에 관하여(CK 025 | Week2 - Day5), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@thisisemptyyy/CK-025-Wee2-Day5저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)