알고리즘/백준

[백준][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;
}