"물을 붓는 여인" (에두아르 마네, 1858)
인자인 height는 숫자로 이루어진 배열입니다.
그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다.
아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7]
입니다.
저 그래프에 물을 담는다고 생각하고,
물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.
배열의 길이는 2이상입니다.
이중 for 문
을 이용하여 폭과 너비를 구한다
- 폭은
list의 인덱스 값
이고, 두 값을 빼서 절대값을 구한다- 높이는
list 값 자체
이고, 두 값 중 최솟값을 구한다- 폭과 너비를 구하여 빈
list
에 차례차례 추가한다- 채워진
list
에서 최댓값을 구한다
def get_max_area(height):
area_list = []
for w1 in range(len(height)):
for w2 in range(len(height)):
h1 = height[w1]
h2 = height[w2]
area_list.append(abs(w1-w2) * min(h1,h2))
return max(area_list)
로직은 거의 비슷하지만 코드를 더욱 간결하게 만든 게 차이점이다
def get_max_area(height):
result = []
for i in range(len(height)):
for j in range(i+1, len(height)):
result.append((min(height[i],height[j]))*(j-i))
return max(result)
이건 한 줄로 구현한 건데..
나 같이 초급자가 이해/구현하기에는 아직 어려워 보인다
def get_max_area(height):
return(max([(j-i)*min(height[i], height[j]) for i in range(len(height)) for j in range(i+1,len(height))]))