height
배열 안에는 배열 이름처럼 그래프의 높이가 각각 주어져있다. 위와 같은 그래프에서 물의 면적은 (두 축 중 짧은 축의 높이* 두 축 사이의 거리)가 된다. 즉, 구한 값 중에서 가장 큰 값을 return하면 문제를 해결할 수 있는 것이다. 코드 상단에finalReturn
즉 마지막에 return해줘야할 값을 0으로 초기화하여Greedy Algorithm
을 통해 최종값을 추출하기로 하였다.
let finalMax=0; // 최종 리턴값
for (let i=0; i<height.length; i++){ // 첫번째 기준 높이 i
for (let j=i+1; j<height.length; j++){ // 두번째 기준 높이 j
if(finalMax<(Math.min(height[i],height[j])*(j-i))){ // 물의 면적이 finalMax보다 클 경우
finalMax=Math.min(height[i],height[j])*(j-i) // finalMax 값을 물의 면적 값으로 대체
}
}
}
return finalMax
}
느낀 점
문제는 약간 거창해보일 수도 있지만, 접근이 상당히 간단한 문제였다. 접근은 다 했으니 구현만 하면 되는데 아직은
Greedy Algorithm
을 구현할 정도의 수준이라 그저 직관적으로 이중 반복문을 써서 답을 구할 수 있었다. 더 많은 알고리즘 방법을 습득해서 다양한 방법들로 다시 풀어봐야겠다는 생각을 했고, 더 많은 학습이 필요할 것 같다고 생각한다.