알고리즘
[Java] 백준 2166번 다각형의 면적
J3SUNG
2023. 7. 25. 23:59
728x90
다각형을 이루는 꼭지점의 좌표가 주어집니다.
해당 다각형의 면적을 구하는 문제입니다.
신발끈 공식을 사용해서 다각형의 면적을 구했습니다.
꼭지점 좌표가 아래와 같을 경우
1 5
2 6
3 7
4 8
(왼쪽 대각선)
1 * 6
2 * 7
3 * 8
4 * 5
(오른쪽 대각선)
5 * 2
6 * 3
7 * 4
8 * 1
(왼쪽 대각선 구한값) - (오른쪽 대각선 구한값) / 2
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
long[][] arr = new long[n + 1][2];
long result = 0;
for (int i = 0; i < n; ++i) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i][0] = Integer.parseInt(st.nextToken());
arr[i][1] = Integer.parseInt(st.nextToken());
}
arr[n][0] = arr[0][0];
arr[n][1] = arr[0][1];
long a = 0L;
long b = 0L;
for (int i = 0; i < n; ++i) {
result += arr[i][0] * arr[i + 1][1] - arr[i][1] * arr[i + 1][0];
}
bw.write(String.format("%.1f", (Math.abs(result) / 2.0)) + "\n");
bw.close();
}
}