[백준, BOJ 2166] 다각형의 면적 (java)
Problem Solving/BOJ

[백준, BOJ 2166] 다각형의 면적 (java)

728x90

https://www.acmicpc.net/problem/2166

메모리: 17,176 KB , 시간: 132 ms

사용 알고리즘: 기하학, 다각형의 넓이


기하학의 신발끈 공식이라는 개념이 필요한 문제이다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws Exception{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int N = Integer.parseInt(br.readLine());

        long[][] points = new long[N + 1][2];
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            points[i][0] = Long.parseLong(st.nextToken());
            points[i][1] = Long.parseLong(st.nextToken());
        }
        points[N] = points[0];

        long sum1 = 0L, sum2 = 0L;
        for (int i = 0; i < N; i++) {
            sum1 += points[i][0] * points[i + 1][1];
            sum2 += points[i][1] * points[i + 1][0];
        }

        System.out.printf("%.1f", Math.round(Math.abs(sum1 - sum2) / 2.0 * 10) / 10.0);
    }
}
728x90