코딩 테스트/백준
백준 2166번 다각형의 면적
tj1023
2024. 9. 9. 23:34
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을 사용해서 소수점 반올림