Codecata ⎜ 그래프의 최대 넓이 찾기

그래프의 최대 넓이 찾기

문제

인자인 height는 숫자로 이루어진 배열입니다.그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다. 아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.

graph for codecata

저 그래프에 물을 담는다고 생각하고, 물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.

  • 가정 배열의 길이는 2이상입니다.



나의 풀이

def get_max_area(height):
    size = []
    for i in range(len(height)):
        for j in range(i + 1, len(height)):
            size.append((j - i) * min(height[i], height[j]))

    # print(size)
    max_size = max(size)
    return max_size
    # print(max_size)


height = [1, 8, 6, 2, 5, 4, 8, 3, 7]
print(get_max_area(height))




위코드 풀이

TIP

index를 left, right 2개를 잡고 가운데로 좁혀 나가는 방식

def get_max_area(height):
    	l = 0
	r = len(height) -1
	area = 0
	while l < r: 
		area = max(area, min(height[l],height[r]) * (r - l))
		if height[l] < height[r]: 
			l += 1
		else:
		    r -= 1
	return area 

댓글남기기