이 글에서는 한 변의 길이가 a인 정삼각형 안에 내접할 수 있는 가장 큰 정사각형의 크기를 구하는 방법을 살펴봅니다. 정삼각형의 한 변을 a, 내접하는 정사각형의 한 변을 x라고 하겠습니다.
기하학적 접근 방법
가장 큰 정사각형은 정삼각형의 밑변 위에 정사각형의 한 변을 놓고, 나머지 두 꼭짓점이 삼각형의 두 변에 닿도록 배치했을 때 얻을 수 있습니다.
먼저 정삼각형의 높이 h는 다음과 같습니다.
h = (√3 / 2) × a
정사각형 위쪽에 남는 작은 삼각형은 원래 정삼각형과 닮음 관계에 있습니다. 닮음비를 이용하면 다음 식이 성립합니다.
x / a = (h − x) / h
이 식을 x에 대해 정리하면 다음과 같습니다.
x = a × h / (a + h)
여기에 h = (√3/2)a를 대입하여 간단히 정리하면 최종 공식을 얻을 수 있습니다.
x = a / (1 + 2/√3) ≈ 0.4641 × a
즉, 정삼각형에 내접하는 가장 큰 정사각형의 한 변은 정삼각형 한 변의 약 46.41%입니다. 정사각형의 넓이가 필요하다면 이 값에 제곱하면 됩니다.
C++ 구현 예제
#include <iostream>
#include <cmath>
using namespace std;
float squareSide(float a) { // a: 정삼각형의 한 변의 길이
if (a < 0) // 음수라면 유효하지 않은 입력
return -1;
float x = a / (1 + 2 / sqrt(3)); // 정사각형의 한 변의 길이
return x;
}
int main() {
float a = 7;
float x = squareSide(a);
cout << "정사각형의 한 변의 길이: " << x << endl;
cout << "정사각형의 넓이: " << x * x;
}
실행 결과
정사각형의 한 변의 길이: 3.24871 정사각형의 넓이: 10.5541
정리
한 변의 길이가 a인 정삼각형에 내접하는 가장 큰 정사각형의 한 변은 a / (1 + 2/√3)로, 정삼각형 한 변의 약 0.4641배입니다. 예를 들어 a = 7일 때 정사각형의 한 변은 약 3.249, 넓이는 약 10.554가 됩니다. 이처럼 닮음 관계만 활용하면 복잡해 보이는 기하 문제도 간단한 공식으로 해결할 수 있습니다.