삼각형의 변의 중점인 세 개의 좌표가 있다고 가정합니다. 삼각형의 좌표를 찾아야 합니다. 따라서 입력이 (5, 3), (4, 4), (5, 5)와 같으면 출력은 (4, 2), (4, 6), (6, 4)가 됩니다.
이를 해결하기 위해서는 X좌표와 Y좌표를 따로 풀어야 합니다. 꼭짓점의 X 좌표는 x1, x2, x3으로 둡니다. 그러면 중간점의 X 좌표는 (x1 + x2)/2, (x2 + x3)/2, (x3 + x1)/2가 됩니다. 이 세 가지 표현의 합은 X 좌표의 합과 같습니다. 이제 우리는 세 변수의 합과 모든 쌍의 합에 대한 세 가지 표현식을 가지고 있습니다. 방정식을 풀면서 좌표 값을 찾아야 합니다. 마찬가지로 Y 좌표에 대해서도 풉니다.
예시
#include<iostream> #include<vector> #define N 3 using namespace std; vector<int> getResult(int v[]) { vector<int> res; int sum = v[0] + v[1] + v[2]; res.push_back(sum - v[1]*2); res.push_back(sum - v[2]*2); res.push_back(sum - v[0]*2); return res; } void searchPoints(int mid_x_coord[], int mid_y_coord[]) { vector<int> x_vals = getResult(mid_x_coord); vector<int> y_vals = getResult(mid_y_coord); for (int i = 0; i < 3; i++) cout << x_vals[i] << " " << y_vals[i] <<endl; } int main() { int mid_x_coord[N] = { 5, 4, 5 }; int mid_y_coord[N] = { 3, 4, 5 }; searchPoints(mid_x_coord, mid_y_coord); }
출력
6 4 4 2 4 6