Creative Code

[2166번]다각형의 면적 본문

백준 문제풀이

[2166번]다각형의 면적

빛하루 2023. 9. 24. 17:27

https://www.acmicpc.net/problem/2166

 

2166번: 다각형의 면적

첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.

www.acmicpc.net

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>

using namespace std;

int main() {
	cout.tie(0);
	cin.tie(0);
	ios_base::sync_with_stdio(false);
	int N; // N개의 점
	cin >> N;
	vector<pair<long long, long long>>point; // 각 점의 좌표를 저장할 벡터
	for (int i = 0; i < N; i++) {
		long long x, y;
		cin >> x >> y;
		point.push_back(make_pair(x, y));
	}
	point.push_back(point[0]); 
	// 헤론의 공식을 적용하기 위해 가장 처음 좌표를 한번 더 넣는다.
	double area = 0.0;
	for (int i = 0; i < point.size() - 1; i++) {
		long long k = point[i].first * point[i + 1].second - point[i].second * point[i + 1].first;
		area += (double)k;
	}
	area /= 2.0;
	if (area < 0) area *= -1;
	cout << fixed;
	cout.precision(1);
	cout << area << '\n';
}

'백준 문제풀이' 카테고리의 다른 글

[7569번]토마토  (0) 2023.09.24
[5430번]AC  (0) 2023.09.24
[2096번]내려가기  (0) 2023.09.24
[1107번]리모컨  (0) 2023.09.24
[17214번]다항 함수의 적분  (0) 2023.09.06