문제 풀이/백준

[백준] 2166번. 다각형의 면적(JAVA)

27200 2024. 10. 11. 17:24

문제

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 문법에 대해 다시 찾아보긴 했다.

신발끈 공식이라고 한 번쯤은 들어봤을 것이다. 수학을 가르친 나의 경험을 비추어보자면 세 점의 좌표를 알고 있을 때 삼각형의 넓이를 구하는 대표적이면서도 무적의 방식이다. 아마, 내 또래 학생들이라면 수능 때 이걸 알아야 할까? 하면서도 알아는 두자~ 했을 텐데.. 요즘은 문제가 괴랄해져서 신발끈 공식이 다각형에서도 사용된다. 신발끈 공식은 실제로 다각형에도 적용된다!! 이걸 알고 있었기에 공식만 한번 더 찾아보고 사용해서 마무리했다.