TIL _ Code Kata _ 그래프 면적의 최댓값 구하기
4916 단어 JavaScript문제해결JavaScript
❓문제
- 숫자로 이루어진 배열을 받았을 때, 배열 내 각 요소의 순서가 x축의 값이고 요소 값이 y축의 높이를 이루는 그래프를 상정
- 예를 들어, [1, 8, 6, 2, 5, 4, 8, 3, 7] 라는 배열을 인자를 받을 경우 그래프는 아래와 같이 형성
- 해당 그래프에 물을 담는다고 가정할 때, 물을 담을 수 있는 가장 넓은 면적의 값을 반환
function getMaxArea (height) { };
1. 해결 방안
- 사고 과정
🔓 (문제 파악) 물이 담기는 면적을 계산해야한다.
🔑 (해결 방안)
- 물이 담기는 면적 =
(뒷 요소의 인덱스 - 앞 요소의 인덱스)(가로) * 두 요소 값 중 작은 값(세로)
(물은 낮은 높이까지만 담길 수 있으므로 두 요소 값 중 작은 값을 사용)
🔓 (문제 파악) 물이 담기는 면적 중 최대값을 구해야 한다.
🔑 (해결 방안)
- 배열 내 모든 조합 가능한 두 요소로 면적을 구한다.
1-1. for문 중첩을 통해 두 개의 요소를 순회한다.
1-2. 가로(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);
}
2. 결과
"작성 내용 중 오류나 오타가 있다면, 댓글로 알려주시면 감사하겠습니다. 주니어 개발자에게 남겨주시는 작은 피드백이 큰 도움이 될 것 같습니다. 고맙습니다 :)"
Author And Source
이 문제에 관하여(TIL _ Code Kata _ 그래프 면적의 최댓값 구하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@okcleff/TIL-Code-Kata-그래프-면적의-최댓값-구하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)