문제 간략 설명

N개의 좌표가 주어졌을 때, 신발끈 공식을 이용하여 다각형의 면적을 구한다.

풀이 방법

  1. 신발끈 공식(Shoelace formula)을 이용한다.
  2. 입력을 받고 i=0~N-1까지 돌면서 area에 값을 증감시킨다. 마지막에 N번째와 1번째 값을 계산한다. 절댓값을 취하고 1/2을 곱해 출력한다.

코드

#include <iostream>
#include <vector>
#include <iomanip>

using namespace std;

int N;

vector<pair<int, int>> points;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);

	cin >> N;

	for (int i = 0; i < N; i++) {
		int x, y;

		cin >> x >> y;

		points.push_back({x, y});
	}

	long double area = 0;

	for (int i = 0; i < N - 1; i++) {
		area += (double)points[i].first * points[i + 1].second;
		area -= (double)points[i + 1].first * points[i].second;
	}

	area += (double)points[N - 1].first * points[0].second;
	area -= (double)points[0].first * points[N - 1].second;

	cout << fixed << setprecision(1) << abs(area) / 2.0 << endl;

	return 0;
}

Key Points