반응형

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

 

2166번: 다각형의 면적

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

www.acmicpc.net

 

 

벡터의 외적을 이용해서 다각형의 면적을 구해주었습니다.

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

typedef long long ll;

int n;
int p[10000][2];

ll ccw(ll x1, ll y1, ll x2, ll y2, ll x3, ll y3) {
	return (x1 * y2 + x2 * y3 + x3 * y1) - (y1 * x2 + y2 * x3 + y3 * x1);
}

int main() {
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		scanf("%d %d", &p[i][0], &p[i][1]);
	}

	ll ans = 0;
	for (int i = 2; i < n; i++) {
		ans += ccw(
			p[0][0], p[0][1],
			p[i - 1][0], p[i - 1][1],
			p[i][0], p[i][1]
		);
	}
	printf("%.1lf", abs(ans / 2.0));
}
반응형

'Algorithm' 카테고리의 다른 글

백준 16987 : 계란으로 계란치기  (0) 2022.02.05
백준 1722 : 순열의 순서  (0) 2022.02.02
백준 16968 : 차량 번호판 1  (0) 2022.01.30
백준 1781 : 컵라면  (0) 2021.12.25
백준 2629 : 양팔저울  (0) 2021.11.24

+ Recent posts