인자인 height는 숫자로 이루어진 배열입니다.그래프로 생각한다면 y축의 값이고,
높이 값을 갖고 있습니다.
아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.
저 그래프에 물을 담는다고 생각하고, 물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.
배열의 길이는 2이상입니다.
need to know
- 이건 넓이 구하는 문제야 .!
- 하나씩 넓이 구해서 리스트에 추가한다음 가장 큰값 뺴면된다 !
문자로 짜봐
- 먼저 빈 리스트를 하나 만들어줘 / 모든 경우의 넓이를 넣기 위해서 !
- 그리고 먼저 넓이를 구해보자 !
- a1과 a2를 이용해서 넓이먼저 구해보자(*참고할 점은 a2의 시작은
a1+1이어야해 !- 그리고 a2에서 a1을 빼주자, 그럼 넓이 끝
- 그리고 높이 먼저 구하자 !
- 물을 담는다는 말은 높이 2개중 낮은 부분에 맞춰져야겠지
- 그래서 height[a1]과 height[a2]일때 둘중에 작은거로 맞춰주고 또는 같은거로 맞춰주자 !
- 그래서 다 나오게하면 끝
- 그리고 width와 height를 곱한 값을 아까 만들어놓은 리스트에 넣고
- 가장 큰값을 넣어주면 끝
정답
def get_max_area(height): results= [] for a1 in range(len(height)): for a2 in range(a1+1,len(height)): width = a2 - a1 if height[a1] == height[a2]: length = height[a1] elif height[a1] > height[a2]: length = height[a2] else: length = height[a1] results.append(width*length) ` return max(results)
참고
max()range()