알고리즘/백준
[백준][C++] 2166: 다각형의 면적
KANTAM
2023. 10. 6. 15:04
문제
풀이
다각형의 넓이를 구하는 공식으로 대각성분끼리 곱하고 더하면 구할 수 있다.
코드
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
int N;
long double answer = 0;
cin >> N;
vector<pair<long long, long long>> coordinate;
coordinate.resize(N);
for (int i = 0; i < N; ++i)
{
long long x, y;
cin >> x >> y;
coordinate[i] = make_pair(x, y);
}
for (int i = 1; i <= N; ++i)
{
pair<long long, long long> bef = coordinate[i - 1];
if (i == N)
{
answer += (bef.first * coordinate[0].second) - (bef.second * coordinate[0].first);
break;
}
answer += (bef.first * coordinate[i].second) - (bef.second * coordinate[i].first);
}
if (answer < 0)
{
answer *= -1;
}
answer /= 2;
answer *= 10;
answer = round(answer);
answer /= 10;
printf("%.1Lf", answer);
return 0;
}