알고리즘 문제

[C/C++ 백준 2166번] 다각형의 면적 (Gold 5)

새파란 공대생 2020. 9. 9. 16:14

www.acmicpc.net/problem/2166

 

2166번: 다각형의 면적

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

www.acmicpc.net

ko.wikipedia.org/wiki/%EC%8B%A0%EB%B0%9C%EB%81%88_%EA%B3%B5%EC%8B%9D

 

신발끈 공식 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 신발끈 공식(―公式)은 좌표평면 상에서 꼭짓점의 좌표를 알 때 다각형의 면적을 구할 수 있는 방법이다. 다각형의 각 꼭짓점��

ko.wikipedia.org

참고하면 바로 풀 수 있다!

 

#include <cstdio>
#include <cmath>
using namespace std;
typedef struct Point{
	long long int x;
	long long int y;
}Point;
int main(void){
	int N;
	long long int ans = 0;
	scanf("%d", &N);
	Point point[N];
	for(int i=0; i<N; i++)
		scanf("%lld %lld",&point[i].x, &point[i].y);
	for(int i=0; i<N; i++){
		if(i==N-1)
			ans += (point[N-1].x*point[0].y-point[0].x*point[N-1].y);
		else
			ans += (point[i].x*point[i+1].y-point[i+1].x*point[i].y);
	}
	printf("%.1lf", (fabs)(ans/2.0));
}