728x90
풀이
"백준 11758, CCW"를 이용해 풀이했다.
벡터곱의 값은 두 벡터로 이루어지는 평행사변형의 넓이와 동일하므로, 벡터곱의 값을 반으로 나눈 값을 더해주면 된다.
기준점이 필요하기 때문에 처음에 입력받은 좌표를 기준점으로 했다.
소스코드
#include <stdio.h>
typedef struct{
double x, y;
}Point;
int main(){
int N;
scanf("%d", &N);
Point p[N];
for (int i = 0; i < N; i++)
scanf("%lf %lf", &p[i].x, &p[i].y);
double sum = 0;
for (int i = 1; i < N; i++)
sum += ((p[i-1].x - p[0].x)*(p[i].y - p[0].y) - (p[i-1].y - p[0].y)*(p[i].x - p[0].x)) / 2;
printf("%.1lf", sum *= sum < 0 ? -1 : 1);
}
출처
2166번: 다각형의 면적
첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.
www.acmicpc.net
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 2239] 스도쿠 [C] (0) | 2021.08.25 |
---|---|
[백준 1806] 부분합 [C] (0) | 2021.08.25 |
[백준 11758] CCW [C] (0) | 2021.08.25 |
[백준 9527] 1의 개수 세기 [C] (0) | 2021.08.25 |
[백준 9252] LCS 2 [C] (0) | 2021.08.24 |