인자인 height는 숫자로 이루어진 배열입니다. 그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다.
아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.
저 그래프에 물을 담는다고 생각하고, 물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.
가정
배열의 길이는 2이상입니다.
https://storage.googleapis.com/replit/images/1555380144403_97221ca23fbb92beaae5b6c800ceb5c8.pn
먼저 가로의 길이와 세로의 길이를 모두 구하면 면적을 구할 수 있다는 생각이 들었고 그 면적을 모두 비교하여 제일 높은 값이 나오게 하면 될거라 생각했으나 구현이 잘되지 않았다.
function getMaxArea(height) {
let area = 0;
for (let i = 0; i < height.length; i++) {
for (let j = i+1; j < height.length; j++) {
area = Math.max(Math.min(height[i], height[j]) * (j-i), area);
}
}
return area;
}
Math.max(), Math.min() 사용시 괄호() 안에서 (a, b) 가 있다면 두 값을 비교하여 더 높은 수 또는 더 낮은 수를 출력하는 method이다.
ex)
Math.max(5, 10) // 10
Math.min(5, 10) // 5