❓문제
- 숫자로 이루어진 배열을 받았을 때, 배열 내 각 요소의 순서가 x축의 값이고 요소 값이 y축의 높이를 이루는 그래프를 상정
- 예를 들어, [1, 8, 6, 2, 5, 4, 8, 3, 7] 라는 배열을 인자를 받을 경우 그래프는 아래와 같이 형성
- 해당 그래프에 물을 담는다고 가정할 때, 물을 담을 수 있는 가장 넓은 면적의 값을 반환
function getMaxArea (height) { };
🔓 (문제 파악) 물이 담기는 면적을 계산해야한다.
🔑 (해결 방안)
🔓 (문제 파악) 물이 담기는 면적 중 최대값을 구해야 한다.
🔑 (해결 방안)
j-i
)와 세로(height[i]
와 height[j]
중 더 작은 값)를 곱하여 면적을 구하고, 이를 새로운 배열에 할당한다.Math.max()
메소드 활용)function moreThanHalf(nums) {
let newArr = [];
for (i = 0; i < height.length; i++) {
for (j = i + 1; j < height.length; j++) {
height[j] > height[i]
? newArr.push((j - i) * height[i])
: newArr.push((j - i) * height[j]);
}
}
// j(뒷 요소) 인덱스는 항상 i(앞 요소) 인덱스보다 한 요소 뒤에서 반복을 시작한다(j = i + 1)
return Math.max(...newArr);
}