[알고리즘] height 배열을 통해 물을 담을 수 있는 가장 큰 면적 구하기

hamingu·2021년 5월 7일
1

알고리즘

목록 보기
6/6

문제

인자인 height는 숫자로 이루어진 배열입니다.그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다.

아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.

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

가정

배열의 길이는 무조건 2 이상입니다.

내 코드

def get_max_area(height):
  result = []

  for i in range(len(height)-1):
    for j in range(i+1, len(height)):
      if height[i] > height[j]:
        result.append(height[j]*(j-i))
      else:
        result.append(height[i]*(j-i))
        
  return max(result)

풀이

  • 결과를 담을 빈 리스트를 만든다
  • 넓이를 구하기 위해서는 가로 * 세로를 해야한다. 즉 가로의 길이는 배열의 숫자끼리의 인덱스 길이에 해당되며 세로의 길이는 배열의 숫자 값으로 결정된다.
  • 배열끼리의 인덱스 길이 * 배열 숫자를 했을 때 가장 높은 값을 얻기 위해 2중 for문을 돌려서 모든 값을 result에 append 한다.
  • max 함수를 통해 result 리스트에서 가장 큰 값을 return 한다.
profile
프로그래밍구

1개의 댓글

comment-user-thumbnail
2021년 7월 30일

감사합니다~

답글 달기