🧫 문제 분석
✔️ 출처
📖 문제

신발끈 공식 이라는 특이한 다각형 면적 구하는 공식이 있다.
문제에서 다각형을 이루는 순서대로 N개의 점 좌표가 주어진다하였으므로 그대로 신발끈 공식을 적용한다.
계산을 할때 long 형으로 받아야하는 점, 출력을 소수점 둘째 자리에서 반올림하여야하는 점을 고려하면된다.
String.format을 사용해서 %.1f 를 사용하면 내부적으로 둘째자리까지 반올림해서 문자열을 만들어준다.
🔅 문제 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
// 문제에서 순서대로 좌표를 준다하였음
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
// 신발끈 정리
long[] a = new long[n + 1];
long[] b = new long[n + 1];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
a[i] = Long.parseLong(st.nextToken());
b[i] = Long.parseLong(st.nextToken());
}
// 처음 정점을 또 추가
a[a.length - 1] = a[0];
b[b.length - 1] = b[0];
double area = (double) Math.abs(multiply(n, a, b) - multiply(n, b, a)) / 2;
System.out.println(String.format("%.1f", area));
}
private static long multiply(int n, long[] a, long[] b) {
long sum = 0;
for (int i = 0; i < n; i++) {
sum += a[i + 1] * b[i];
}
return sum;
}
}
❗ 오답노트 / 필요한 지식
'baekjoon' 카테고리의 다른 글
백준 10830번 : 행렬 제곱 [자바] (0) | 2025.04.04 |
---|---|
백준 14719번 : 빗물 [자바] (0) | 2025.03.13 |
백준 9017번 : 크로스 컨트리 [자바] (1) | 2025.03.08 |
백준 18870번 : 좌표 압축 [자바] (1) | 2025.03.02 |
백준 1022번 : 소용돌이 예쁘게 출력하기 [자바] (1) | 2025.02.04 |