[CodeKata] #10, getMaxArea 물을 담을 수 있는 가장 넓은 면적의 값을 반환

April·2021년 5월 9일
1
post-thumbnail

문제

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

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

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

가정

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


💡 풀이

  1. 이중 for문을 돌며 면적의 x값과 y값 구하기
  2. Math.min(x, y)으로 둘 중 작은 숫자를 z에 할당
  3. 조건문으로 z에 y-x값을 곱한 값이, size보다 클 경우 할당
  4. 최종 값 리턴

✅ 코드

function getMaxArea(height) {
  let size = 0;
  for (let i=0; i<height.length;i++) {
    for (let j=i; j<height.length;j++) {
      let x = height[i]
      let y = height[j]
      let z = Math.min(x, y)
      if(size < z*[j-i]) {
        size = z*[j-i];
      } 
    }
  }
  return size;
}

const height = [1, 8, 6, 2, 5, 4, 8, 3, 7]; 
console.log(getMaxArea(height));

🎈 What i learned

  • 생각보다 빠르게 풀렸던 문제
  • 처음에 j-i를 해주지 않아서 높이 값이 최대값으로 구해져 시간이 조금 소요되었는데
  • 그래프를 보고 문제점을 빨리 찾아서 생각보다 빠르게 풀렸다
profile
🚀 내가 보려고 쓰는 기술블로그

0개의 댓글