https://www.acmicpc.net/problem/2166
N각형의 점의 x, y 좌표가 순서대로 주어질때 면적을 구하는 문제다.
위와 같은 신발끈 공식을 사용하여 문제를 풀 수 있다.
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n;
double sum=0;
cin >> n;
long long x[n];
long long y[n];
for(int i=0; i<n; i++)
cin >> x[i] >> y[i];
for(int i=0; i<n-1; i++)
sum += x[i]*y[i+1] - x[i+1]*y[i];
// 마지막항 계산
sum += x[n-1]*y[0] - x[0]*y[n-1];
// fixed : 고정 소수점 표기법
// setprecision : 원하는 소수점 자리까지 반올림 (iomanip 라이브러리)
cout << fixed << setprecision(1) << abs(sum/2);
return 0;
}
포인트는 다음과 같다
1. 값의 범위에 따른 자료형에 주의하여 double과 long long 사용
2. 마지막항 계산
3. fixed와 setprecision을 사용해서 소수점 반올림
'코딩 테스트 > 백준' 카테고리의 다른 글
백준 1197번 최소 스패닝 트리 (0) | 2024.09.21 |
---|---|
백준 2467번 용액 (0) | 2024.09.21 |
백준 2580번 스도쿠 (0) | 2023.04.10 |
백준 9663번 N-Queen (0) | 2023.04.10 |
백준 15652번 N과 M (4) (0) | 2023.04.06 |