문제 상황
삼각형 세 변의 길이가 주어졌을 때, 이 값들을 이용해 삼각형의 넓이를 계산해 반환하는 함수를 작성해야 합니다.
헤론의 공식(Heron's Formula)
세 변의 길이를 모두 알고 있다면 헤론의 공식을 사용해 삼각형의 넓이를 구할 수 있습니다.
1단계 — 삼각형 둘레의 절반인 s 값을 먼저 계산합니다.
s = (a + b + c) / 2
2단계 — 헤론의 공식에 대입하여 넓이 A를 구합니다.
A = sqrt( s(s-a)(s-b)(s-c) )
코드 예제
그럼 위 공식을 자바스크립트 함수로 구현해 보겠습니다.
const sides = [12, 4, 9];
const areaOfTriangle = sides => {
const [a, b, c] = sides;
const sp = (a + b + c) / 2;
const aDifference = sp - a;
const bDifference = sp - b;
const cDifference = sp - c;
const area = Math.sqrt(sp * aDifference * bDifference * cDifference);
return area;
};
console.log(areaOfTriangle(sides));코드 설명
배열 구조 분해 할당을 통해 세 변의 길이를 각각 a, b, c 변수로 추출한 뒤, 반둘레(sp)를 계산합니다. 이후 각 변과 반둘레의 차이를 구하고, 네 값을 모두 곱한 결과에 Math.sqrt()로 제곱근을 적용하면 삼각형의 넓이가 완성됩니다.
실행 결과
콘솔 출력 결과는 다음과 같습니다.
13.635890143294644
참고로 주어진 세 변(12, 4, 9)은 삼각형 부등식을 만족하므로 유효한 결과가 반환됩니다. 만약 세 변 중 가장 긴 변이 나머지 두 변의 합보다 크거나 같다면 해당 조합으로는 삼각형이 성립하지 않아 NaN이 반환되므로, 실무에서는 입력값 유효성 검사를 함께 추가하는 것이 좋습니다.