[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] 로 주어졌지만 가로의 길이를 모르기 때문에 첫번째 높이에서 두번째 높이를 빼서 가로의 길이를 구한다음 넓이를 구하는 식으로 문제를 해결하였다.
🔥 아직 문제를 볼때마다 대체...이게 뭔소린고... 하고 많은 생각이 들지만 하나씩 차근차근 천천히 머리속에 집어 넣으려고 노력하는 중이다.
Author And Source
이 문제에 관하여([TIL]_CodeKata (#8)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@j-jhoo/TILCodeKata-8저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)