Notice
Recent Posts
Recent Comments
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

블로그 언저리인 무언가

[백준/BOJ] 2166 다각형의 면적 본문

Programming/BOJ

[백준/BOJ] 2166 다각형의 면적

he1fire 2020. 9. 19. 02:18
728x90

문제 : 2166 다각형의 면적

 

2166번: 다각형의 면적

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

www.acmicpc.net

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