본문 바로가기

코딩 테스트/백준

백준 2166번 다각형의 면적

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