2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

강의자료/정보영재

세점을 알때 삼각형의 넓이 구하기

원당컴퓨터학원 2017. 9. 8. 16:30

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


이미지 출처 : 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;

}

 



사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기