문제
https://www.acmicpc.net/problem/2166
풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
long[] x = new long[N + 1];
long[] y = new long[N + 1];
long sumX = 0, sumY = 0;
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
x[i] = Integer.parseInt(st.nextToken());
y[i] = Integer.parseInt(st.nextToken());
}
x[N] = x[0];
y[N] = y[0];
for (int i = 0; i < N; i++) {
sumX += x[i] * y[i + 1];
sumY += x[i + 1] * y[i];
}
String area = String.format("%.1f", (Math.abs(sumX - sumY) / 2.0));
System.out.println(area);
}
}
사실문제 자체에 대한 개념이 중요한 것이지 코드 구현은 어렵지 않다고 생각한다. 다만 오랜만에 쓴 String.format 문법에 대해 다시 찾아보긴 했다.
신발끈 공식이라고 한 번쯤은 들어봤을 것이다. 수학을 가르친 나의 경험을 비추어보자면 세 점의 좌표를 알고 있을 때 삼각형의 넓이를 구하는 대표적이면서도 무적의 방식이다. 아마, 내 또래 학생들이라면 수능 때 이걸 알아야 할까? 하면서도 알아는 두자~ 했을 텐데.. 요즘은 문제가 괴랄해져서 신발끈 공식이 다각형에서도 사용된다. 신발끈 공식은 실제로 다각형에도 적용된다!! 이걸 알고 있었기에 공식만 한번 더 찾아보고 사용해서 마무리했다.
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 10942번. 팰린드롬?(JAVA) (0) | 2024.10.16 |
---|---|
[백준] 2473번. 세 용액(JAVA) (4) | 2024.10.13 |
[백준]11660번. 구간 합 구하기5(JAVA) (1) | 2024.10.09 |
[백준] 16953번. A -> B(JAVA) (0) | 2024.10.08 |
[백준] 1644번. 소수의 연속합(JAVA) (1) | 2024.10.06 |