인자인 height는 숫자로 이루어진 배열입니다.
그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다.
아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7]
입니다.
저 그래프에 물을 담는다고 생각하고,
물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.
배열의 길이는 2이상입니다.
물을 담을 수 있는 가장 넓은 면적 size는 결국 물을 담은 파란색 부분을 구하는 것이다
따라서 size를 구하는 공식? = 두 요소 간의 가로길이
* 높이가 낮은 요소의 y축길이
getMaxArea() 함수에 받을 인자로는 배열이기 때문에 for문을 이용할건데
1번에서 이해한 내용을 보면 2개의 요소를 비교해야 하기 때문에 2개의 for문을 사용할 것이다
다만 두 요소가 중복되면 안되기도 하면서 & 두 요소 간의 가로길이 차이
(=인덱스 차이) 를 구하기 위해서는
각각의 인덱스 값이 달라야 하기 때문에 (=하나는 크고, 다른 하나는 작고) i < j
→ 첫번째 for문과 두번째 for문의 시작조건은 아래와 같이 다르게 지정할 것이다
function getMaxArea(height) {
let size = 0;
for (let i = 0; i < height.length; i++) {
for (let j = i + 1; j < height.length; j++) {
size = Math.max(Math.min(height[i], height[j]) * (j - i), size);
}
}
return size;
}
let size = 0;
for (let i = 0; i < height.length; i++) {
for (let j = i + 1; j < height.length; j++) {
}
}
(j - i)
Math.min(height[i], height[j])
Math.min(height[i], height[j]) * (j - i)
size = Math.max(Math.min(height[i], height[j]) * (j - i), size);