[CodeKata]Day10

박민하·2022년 6월 17일
0

python 문제

목록 보기
25/49
post-thumbnail

Code Kata 란, 2인 1조의 구성으로 서로 협력하여 하루에 한 문제씩 해결하는 과제입니다.


# 문제

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

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

https://storage.googleapis.com/replit/images/1555380144403_97221ca23fbb92beaae5b6c800ceb5c8.pn

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

+ 가정

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


# 코드

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

# 풀이 과정

  1. 리스트 요소들을 더하기 위해서는 for문 2번을 써야한다.
  2. range() 함수 사용, height 의 길이만큼 반복하고 내부 for문은 동일한 인덱스의 숫자를 제외하기 위해 1을 더한다.
  3. 인덱스 번호를 이용해 높이를 구해서 최솟값을 구한다.
  4. 두번째 그래프의 위치 j에서 첫 번째 그래프의 위치 i를 빼면 너비 x값을 구할 수 있다.
  5. 3번과 4번을 곱한 값을 빈 리스트인 result에 넣는다.
  6. result의 최댓값 return

+ 그 외 코드

profile
backend developer 🐌

0개의 댓글