https://www.acmicpc.net/problem/2166
https://ggaebap.tistory.com/140
[JAVA] 신발끈 공식
좌표평면상의 좌표로 구성된 다각형의 면적을 구하는 공식이다. 좌표값이 다갹형을 구성하는 시계 또는 반시계 방향으로 주어져야 사용 가능하고 변이 교차하는 경우는 사용할 수 없어 쓰임새
ggaebap.tistory.com
너 이 공식 알아? 모르면 틀려야지를 시전하는 내가 싫어하는 유형의 문제이다.
import java.io.*;
import java.util.*;
public class Main {
static BufferedReader br;
static StringTokenizer st;
static StringBuilder sb;
public static void main(String[] args) throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Point[] pArr = new Point[n];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
pArr[i] = new Point(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
System.out.printf("%.1f", shoelace(pArr));
}
static double shoelace(Point[] pArr) { // 신발끈 공식
double sum1 = 0;
double sum2 = 0;
for (int i = 0; i < pArr.length; i++) {
if (i == pArr.length - 1) {
sum1 += pArr[i].x * pArr[0].y;
sum2 += pArr[i].y * pArr[0].x;
continue;
}
sum1 += pArr[i].x * pArr[i + 1].y;
sum2 += pArr[i].y * pArr[i + 1].x;
}
return Math.abs(sum1 - sum2) / 2;
}
static class Point {
Double x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
}
}
'Algorithm > 문제' 카테고리의 다른 글
[백준 / JAVA] 2467. 용액(G5) (0) | 2024.12.01 |
---|---|
[백준 / JAVA] 10942. 팰린드롬?(G4) (0) | 2024.11.22 |
[백준 / JAVA] 1238. 파티(G3) (0) | 2024.11.03 |
[백준 / JAVA] 1916. 최소비용 구하기(G5) (0) | 2024.11.03 |
[백준 / JAVA] 2638. 치즈(G3) (0) | 2024.10.26 |