어흥
[백준 2166] 다각형의 면적 (C++) 본문
728x90
반응형
문제 링크: www.acmicpc.net/problem/2166
1. 주의할 점
- 소수점으로 나타내야 하므로 Double을 사용하도록 한다(10^5*10^5 여러개를 더한 값은 Int의 범위를 벗어나므로 주의)
2. 구현
- 모든 좌표를 X[],Y[]에 입력받은 이후, Result를 0으로 설정한다
- Result+=CCW()의 결과값을 통해 다각형의 면적을 구한다(다각형을 이루는 순서대로 좌표가 주어진다고 적혀있음)
#include <iostream>
#include <math.h>
using namespace std;
double x[10000], y[10000];
double ccw(int a, int b, int c) {
double aa[2] = { y[b] - y[a],x[b] - x[a] };
double bb[2] = { y[c] - y[a],x[c] - x[a] };
double temp = aa[0] * bb[1] - aa[1] * bb[0];
return temp / 2;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int num;
double result = 0;
cin >> num;
for (int i = 0; i < num; i++)
cin >> x[i] >> y[i];
for (int i = 1; i < num - 1; i++)
result += ccw(0, i, i + 1);
cout.precision(1);
cout << fixed;
cout << abs(result);
return 0;
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 14324] Rain (Small) (C++) (0) | 2020.12.09 |
---|---|
[백준 9879] Cross Country Skiing (C++) (0) | 2020.12.08 |
[백준 11758] CCW (C++) (0) | 2020.12.05 |
[백준 2170] 선 긋기 (C++) (0) | 2020.12.04 |
[백준 14466] 소가 길을 건너간 이유 6 (0) | 2020.12.04 |
Comments