SDJ( 수돈재 아님 ㅎ )

[C++] 2166 - 다각형의 면적 본문

알고리즘/Backjoon

[C++] 2166 - 다각형의 면적

ShinDongJun 2020. 1. 30. 00:41

문제 링크 : https://www.acmicpc.net/problem/2166

 

2166번: 다각형의 면적

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

www.acmicpc.net

 

 

알고리즘 분류는 CCW이지만,, 너무나도 간단한 신발끈 공식이 있어서 신발끈 공식을 사용했다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include<bits/stdc++.h>
 
#define endl '\n'
 
using namespace std;
 
typedef struct point
{
    long long y, x;
}P;
 
P p[10005];
 
int main(void)
{
    long long SUM = 0;
    int N;
    cin >> N;
    for(int i = 0; i < N; ++i)
    {
        cin >> p[i].x >> p[i].y;
    }
 
    for(int i = 0; i < N; ++i)
    {
        SUM += p[i].x*p[(i+1)%N].y;
    }
 
    for(int i = 0; i < N; ++i)
    {
        SUM -= p[(i+1)%N].x*p[i].y;
    }
 
    printf("%.1lf\n", (double)abs(SUM)/2.0);
 
    return 0;
}
Comments