함수는 인자로서 숫자로 이루어진 height를 받으며 각 인덱스는 높이를 나타낸다. 보다 이해하기 쉽게 아래 그래프를 보자
height배열의 인덱스값에 따라 순차적으로 높이가 정해지고 두개의 인덱스 사이에 있는 공간에 물을 담을 수 있다. 사진의 빨간 인덱스값을 보자. 각각 높이가 8과 7이다. 이 사이에 담을 수 있는 물의 양은 너비와 높이 값을 곱해서 계산할 수 있는데 너비값은 7, 높이값은 높이 8만큼 물을 채우면 7인 부분에서 물이 흘러 넘칠테니 7로 계산한다. 여기서 너비와 높이를 곱하면(7*7) 49가 나오게 된다. 이러한 방식으로 계산되는 물을 담을 수 있는 공간의 경우의 수들 중에 가장 큰 숫자를 구하면 된다.
let array1 = [1, 8, 6, 2, 5, 4, 8, 3, 7];
function getMaxArea(height) {
let maxArea = 0;
for(let i=0; i<height.length-1; i++){
for(let j=i+1; j<height.length; j++){
if(height[j]<height[i]){
if((j-i)*height[j] > maxArea){
maxArea = (j-i)*height[j];
}
}
else{
if((j-i)*height[i] > maxArea){
maxArea = (j-i)*height[i];
}
}
}
}return maxArea;
}
console.log(getMaxArea(array1));
접근방법
풀이 2.
function getMaxArea(height) {
let a = []
for(let i = 0 ; i < height.length-1 ; i++) {
for(let j = i+1 ; j< height.length; j++){
a.push((height[i]>height[j] ? height[j] : height[i]) * Math.abs(i-j) )
}
}
return a.sort((a,b)=> b-a)[0]
}