Code Kata #10 가장 넓은 면적 구하기

Somi·2021년 7월 2일
0

CODE KATA

목록 보기
10/12
post-thumbnail

💁 문제분석

인자인 height는 숫자로 이루어진 배열입니다. 그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다.
아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.
저 그래프에 물을 담는다고 생각하고, 물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.
가정
배열의 길이는 2이상입니다.
https://storage.googleapis.com/replit/images/1555380144403_97221ca23fbb92beaae5b6c800ceb5c8.pn

문제를 보자마자 읭 스러웠지만, 열음님의 친절한 설명으로 문제를 겨우 이해했다. 가장 먼저 생각난건 인덱스로 x의 길이를 구하고 두 요소 값을 비교해서 작은 값을 y값으로 설정해야겠다는 생각을 했다.
그리고 그 두 값을 곱해서 배열에 모든 경우의 수를 넣고 가장 큰 값을 리턴하면 되겠다는 생각을 했다.

🙈 나의 코드

function getMaxArea(height) {
  //1.인덱스 값이 가장 차이가 크고
  // 2. 인자들간의 차이가 가장 클때 최대값 달성...
  let arr = []
  let newArr=[]

  for (let i = 0; i < height.length; i++){
    for(let j=1; j<height.length; j++){
      let x = j-i

      let y = Math.min(height[i], height[j])

      newArr.push(x*y)

    }
  }
    
  
  return  Math.max(...newArr)
  
}

이번에는 거의 15분 만에 스무스하게 풀어서 기분이 매우 좋았다. 저번에 과반인 수 찾기 이후로 처음으로 잘 풀어낸 문제 같다...!
결과는 대성공...! 대신 이중 for문을 쓴게 마음에 조금 걸리는데 다른 답을 들어봐도 뾰족한 수는 보이지 않는다. 다만 배열에 다 넣지않고 처음에 어떤 수를 선언해서 해결하는 방법도 있었다.

코드카타 2주차는 성공적으로 마무리 할 수 있어서 기분이 좋았다! :)

0개의 댓글

Powered by GraphCDN, the GraphQL CDN