- 문제
인자인 height는 숫자로 이루어진 배열입니다.그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다. 아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.
저 그래프에 물을 담는다고 생각하고, 물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.
[가정] 배열의 길이는 2이상입니다.
처음에는 어떻게 풀어야하는지 감도 오지 않았다. 와... 오늘 문제도 못 풀겠구나 싶어서 천장만 쳐다보다가 완벽하게 코드까지 쓰지는 못해도 접근이라도 해보자는 생각으로 다시 천천히 봤다. 2주차 짝꿍님과 함께... 천천히...접근...
면적의 길이를 구하는 공식은 가로 곱하기 세로다.
세로는 배열이 가진 값이고, 가로는 배열 갯수 -1이라고 생각했다.
이 부분이 제일 고민이 많이 됐다. 가로 곱하기 세로인건 알겠는데.. 가장 넓은 면적의 길이를 어떻게 접근할 수 있을지 생각나지 않았었다. 새로운 배열.. 리스트를 만들어서 첫번째 인덱스부터 마지막까지 인덱스까지 모든 면적들을 다 리스트 안에 넣어준 뒤에 제일 큰 값을 리턴하도록 하면 될 것 같았다.
def get_max_area(height):
result = []
for i in range(0,len(height)):
for j in range(i+1, len(height)):
if height[i] < height[j] :
result.append(height[i] * (j-i))
else :
result.append(height[j] * (j-i))
return max(result)