CK week2 day5

5623 단어 codekatacodekata

🧨 문제

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

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

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






🎯 내 풀이

def get_max_area(height):
#step1
  result = []

#step2
    for i in range(len(height)-1):
        for j in range(i+1, len(height)):
            area = (j-i) * min(height[i], height[j])
            result.append(area)
    return max(result)
  

두 요소를 선택해, 넓이를 구한 다음 넓이 값의 최대 값을 반환한다.




📍 step 1

def get_max_area(height):
#step1
  result = []
  

결과를 담을 배열을 선언 한다.




📍 step 2

def get_max_area(height):
#... ...#

#step2
    for i in range(len(height)-1):
        for j in range(i+1, len(height)):
            area = (j-i) * min(height[i], height[j])
            result.append(area)
    return max(result)
  

중첩 for 문을 돌며, 넓이값을 구해 result에 추가하고, result의 최대값을 반환한다.




🎈 풀이에 대해

모든 경우의 수에 대한 넓이를 다 구해서, 그 넓이값 중 가장 큰 값을 구하도록 구현했는데 비효율적이라고 생각 된다. 조금 더 효율적인 풀이를 더 고민해 봐야겠다.

좋은 웹페이지 즐겨찾기