강의실/정보영재

다각형의 넓이를 구하는 식으로 사선식이 있네요.


이미지 출처 : http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=431&sca=30&page=2


이러한 이치로 다음과 같은 삼각형의 넓이도 꼭지점 위치만 가지고도 간단하게 넓이를 구할 수 있습니다.



이미지출처 : http://elwlsek.tistory.com/195 



알고리즘 문제에 단순다각형의 면적을 구하는 문제도 이 식을 이용하면 아주 간단하게 풀리는것을 확인 할수가 있었습니다.


3005 : 단순다각형의 면적


문제출처 : http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2276&sca=30d0



2차원 평면에 N개의 점으로 이루어진 단순 다각형에 대한 정보가 주어진다.

주어진 단순 다각형의 면적을 구하는 프로그램을 작성해보자.

 

첫 행에 단순 다각형을 이루는 점의 개수 N( 3 <= N <= 10000)이 주어진다.
다음 행부터 N행에 걸쳐 점의 좌표 xi, yi가 공백으로 구분하여 주어진다.
(-100,000 <= xi, yi <= 100,000)



첫 행에 단순 다각형의 면적을 소수 둘째 자리에서 반올림하여
첫째 자리까지 출력한다.


 [Copy]
4
0 0
100 0
100 100
0 100
 [Copy]
10000.0




문제 풀이)



#include <iostream>
#include <stdio.h>
#include <algorithm>
 
using namespace std;
 
int x[10001],y[10001];
 
int main()
{
    //freopen("input.txt","r",stdin);
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d %d",&x[i],&y[i]);
    }
 
    long long ans = 0;
    for(int i=0;i<n;i++)
    {
        int j = (i + 1) % n; //다음 포지션
        ans+=(long long)x[j]*y[i] - (long long)x[i]*y[j];
    }
    ans = abs(ans);
    printf("%.1lf\n",(double)ans/2.0);
 
    return 0;

}

 



이 장소를 Daum지도에서 확인해보세요.
인천 서구 당하동 1028-2 장원프라자 502호
도움말 Daum 지도
4 0
  • 버블프라이스 2017.09.09 04:16 신고    

    세점을 알때 삼각형의 넓이 구하기 답안을 공유해주셔서
    유사한 문제를 푸는 학생분들께 많은 도움이 될것 같습니다.
    행복한 주말 보내시길 바래요-

  • 핑구야 날자 2017.09.09 08:03 신고    

    이런 류의 문제는 푸는 재미가 있지요 잘보고 갑니다

  • 꾸구 2018.08.09 00:12 신고    

    삼각형 사진 계산이 잘못되어 있는 것 같아용
    20+20+84+12-(60+140+4+12)에 절댓값 씌어서 계산하는게 맞는거 아닌가욤...?

    • 원당컴 2018.08.09 08:55 신고  

      절대값 씌워서 계산하는 거 맞습니다.^^