문제 상황
삼각형의 세 변의 길이를 입력받아 헤론의 공식(Heron's formula)을 활용해 넓이를 계산하는 JavaScript 함수를 작성해야 합니다.
헤론의 공식은 삼각형의 높이나 각도 정보 없이 오직 세 변의 길이만으로 면적을 구할 수 있는 고전적인 기하학 공식입니다. 먼저 세 변의 길이의 합을 2로 나눈 값인 반둘레(semi-perimeter) s를 구한 뒤, 다음 식에 대입하면 됩니다.
면적 = √(s × (s - a) × (s - b) × (s - c))
예제 코드
다음은 위 공식을 JavaScript로 구현한 코드입니다.
const s1 = 10;
const s2 = 8;
const s3 = 7;
const findArea = (s1, s2, s3) => {
const arr = [];
const arguments = [s1, s2, s3];
for(let i = 0; i < arguments.length; i++){
arr.push(arguments[i]);
};
// 반둘레(s) 계산
let s = (arr[0] + arr[1] + arr[2]) / 2;
// 헤론의 공식 적용
return Math.sqrt(s * (s - arr[0]) * (s - arr[1]) * (s - arr[2]));
};
console.log(findArea(s1, s2, s3));실행 결과
27.810744326608734
코드 설명
함수의 동작 과정을 단계별로 살펴보면 다음과 같습니다.
1. 입력받은 세 변의 길이(s1, s2, s3)를 배열 arr에 순서대로 저장합니다.
2. 세 변의 합을 2로 나누어 반둘레 s를 계산합니다. 예제에서는 (10 + 8 + 7) / 2 = 12.5가 됩니다.
3. Math.sqrt() 메서드를 사용해 √(s × (s-a) × (s-b) × (s-c)) 값을 반환합니다.
따라서 변의 길이가 각각 10, 8, 7인 삼각형의 면적은 약 27.81로 계산됩니다.
참고로, 실무에서는 arguments라는 변수명보다는 sides처럼 더 명확한 이름을 사용하고, 배열 생성 시 for문 대신 [s1, s2, s3]를 직접 활용하는 것이 코드 가독성 측면에서 더 권장됩니다.