codekata #10

신승호·2021년 5월 7일

codekata

목록 보기
14/15

codekata_0507


문제

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

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

Graph

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

가정

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

need to know

  1. 이건 넓이 구하는 문제야 .!
  2. 하나씩 넓이 구해서 리스트에 추가한다음 가장 큰값 뺴면된다 !

문자로 짜봐

  1. 먼저 빈 리스트를 하나 만들어줘 / 모든 경우의 넓이를 넣기 위해서 !
  2. 그리고 먼저 넓이를 구해보자 !
  • a1과 a2를 이용해서 넓이먼저 구해보자(*참고할 점은 a2의 시작은 a1+1이어야해 !
  • 그리고 a2에서 a1을 빼주자, 그럼 넓이 끝
  1. 그리고 높이 먼저 구하자 !
  • 물을 담는다는 말은 높이 2개중 낮은 부분에 맞춰져야겠지
  • 그래서 height[a1]과 height[a2]일때 둘중에 작은거로 맞춰주고 또는 같은거로 맞춰주자 !
  • 그래서 다 나오게하면 끝
  1. 그리고 width와 height를 곱한 값을 아까 만들어놓은 리스트에 넣고
  2. 가장 큰값을 넣어주면 끝

정답

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()
profile
신승홉니다

0개의 댓글