블로그 언저리인 무언가
[백준/BOJ] 2166 다각형의 면적 본문
728x90
문제 : 2166 다각형의 면적
2차원 평면상의 점으로 이루어진 다각형의 면적을 출력하는 문제이다.
N각형을 (N-2)개의 삼각형으로 쪼개서 CCW를 이용해 각각의 넓이를 구한 뒤 합쳐주면 된다.
다 풀어놓고 틀려서 이유를 몰랐는데 백준 질문글을 보고 절댓값 처리를
매번 해주지 않고 마지막에 한 번만 하도록 바꾸니 맞았다.
매번 절댓값을 씌웠을 때 틀리는 이유는 잘 모르겠다...
Code
#include <bits/stdc++.h>
#define ll long long
using namespace std;
typedef pair<ll,ll> pll;
ll CCW(pll a, pll b, pll c){
return a.first*(b.second-c.second)+b.first*(c.second-a.second)+c.first*(a.second-b.second);
}
int main(){
vector<pll> arr;
ll N;
double ans=0;
cin >> N;
for (int i=0;i<N;i++){
ll a, b;
cin >> a >> b;
arr.push_back(make_pair(a,b));
}
for (int i=1;i<N-1;i++){
ans+=CCW(arr[0],arr[i],arr[i+1]);
}
printf("%.1f",abs(ans/2));
return 0;
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[백준/BOJ] 1668 트로피 진열 (0) | 2020.09.19 |
---|---|
[백준/BOJ] 1058 친구 (0) | 2020.09.19 |
[백준/BOJ] 9019 DSLR (0) | 2020.09.19 |
[백준/BOJ] 5525 IOIOI (0) | 2020.09.19 |
[백준/BOJ] 1780 종이의 개수 (0) | 2020.09.19 |
Comments