[TIL]_CodeKata (#8)

🌈 Code Kata [문제 해결능력 기르기]

🌀문제

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

➡️ 처음 문제를 보고 전혀 이해하지 못했었다... 그냥 가로 세로 곱해서 부피를 구하면 되는거 아닌가..?? 라고 생각했지만... 역시 아니었다.. 가로 세로로 한칸씩 넓이를 구해가면서 그래프에 물에 넘치지 않게 해야한다.

🤯 내가 작성한 코드 😱

function getMaxArea(height) {
  for (let i=0; i<height.length; i++) {
    for(let j=i+1; j<height.length; j++) {
    }
  }
}

👉 그냥 중첩 for문 밖에 생각나지 않았다.... goo선생님께 물어봐서 코드를 이해해야지하고 마음 먹었다...근데 동기 유신님이 코드를 설명해주셨고 이해 확 되버렸다!!


✏️ 정답 코드

function getMaxArea(height) {  
  let arr = [];
  for(let i=0; i<height.length; i++) {
    let arrHeight = height[i];
    for(let j=i+1; j<height.length; j++) {
      let arrHeight2 = height[j];
      if(arrHeight < arrHeight2) {
        //첫번째 높이랑 두번째 높이 
        arr.push(arrHeight * (j - i));
        // 가로값 수를 구함
      }
      else if(arrHeight >= arrHeight2) {
        arr.push(arrHeight2 * (j - i));
      }
    }
  }
  const maxValue = Math.max(...arr); //최대값 배열에서 추출하는 방법 
  return maxValue;
  
}

📌 코드 해석

👉 높이는 [1,8,6,2,5,4,8,3,7] 로 주어졌지만 가로의 길이를 모르기 때문에 첫번째 높이에서 두번째 높이를 빼서 가로의 길이를 구한다음 넓이를 구하는 식으로 문제를 해결하였다.
🔥 아직 문제를 볼때마다 대체...이게 뭔소린고... 하고 많은 생각이 들지만 하나씩 차근차근 천천히 머리속에 집어 넣으려고 노력하는 중이다.

좋은 웹페이지 즐겨찾기