위코드
자바스크립트 코드카타 5.
출저 : 위코드 코드카다 자료
인자인 height는 숫자로 이루어진 배열입니다.
그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다.
아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.
저 그래프에 물을 담는다고 생각하고,
물을 담을 수 있는 가장 넓은 면적의 값을 반환해주세요.
!!!가정
배열의 길이는 2이상입니다.
배열에서 최대값을 찾아 인덱스를 어떻게 반환하나
였다. 하지만 넓이를 구해야 하므로 두번째 최대값을 찾을때부터 막히기 시작했고 배열
의 특성을 살려 배열안의 값들을 비교하여 넓이를 먼저 구하고
그 넓이들 중 최대값을 찾는 방법이 용이하다고 생각되었다.function getMaxArea(height) { let arr = [] let aa for (i=0; i < height.length; i ++) { for (j=i+1; j < height.length; j ++) { if (height[i] < height[j]) { aa = height[i]*(j-i) } else { aa = height[j]*(j-i) } arr.push(aa) } } let max = Math.max.apply(null, arr) return max } getMaxArea([35, 46, 43, 59, 59]) //140
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; }