이 문제에서는 삼각형의 세 꼭짓점 좌표를 담고 있는 2차원 배열이 주어지며, C++을 이용해 삼각형의 무게중심(Centroid)을 구하는 프로그램을 작성하는 것이 목표입니다.
무게중심과 중선이란?
삼각형의 무게중심(Centroid)은 삼각형의 세 중선이 한 점에서 만나 교차하는 지점을 말합니다.
중선(Median)은 삼각형의 한 꼭짓점과 그 반대편 변의 중점을 연결하는 선분입니다.
구체적인 예시를 통해 문제를 살펴보겠습니다.
입력
(-3, 1), (1.5, 0), (-3, -4)
출력
(-1.5, -1)
설명
무게중심 (x, y) = ((-3 + 1.5 - 3) / 3, (1 + 0 - 4) / 3) = (-1.5, -1)
풀이 접근 방법
이 문제는 삼각형 무게중심에 대한 기하학적 공식을 활용하면 아주 간단하게 해결할 수 있습니다.
세 꼭짓점의 좌표가 (ax, ay), (bx, by), (cx, cy)일 때, 무게중심은 다음과 같이 계산됩니다.
x = (ax + bx + cx) / 3
y = (ay + by + cy) / 3
즉, 세 꼭짓점의 x좌표끼리, y좌표끼리 각각 더한 뒤 3으로 나누어 주면 됩니다.
예제 코드
다음은 위 풀이 과정을 실제로 구현한 C++ 프로그램입니다.
#include <iostream>
using namespace std;
int main() {
float tri[3][2] = {{-3, 1},{1.5, 0},{-3, -4}};
cout<<"삼각형의 무게중심은 (";
cout<<((tri[0][0]+tri[1][0]+tri[2][0])/3)<<", ";
cout<<((tri[0][1]+tri[1][1]+tri[2][1])/3)<<")";
return 0;
}
실행 결과
삼각형의 무게중심은 (-1.5, -1)