백준 2166번 다각형의 면적 JAVA

YB·2025년 1월 2일

링크텍스트

설명

신발끈 공식을 사용해 풀 수 있는 문제이다. 신발끈 공식이란 다각형의 꼭짓점 좌표가 주어졌을 때 꼭짓점 좌표를 사용해 다각형의 면적을 계산하는 간단한 방법이다. 이 공식의 이름은 좌표 값을 곱해서 더하고 빼는 과정이 마치 신발끈을 묶는 모양과 비슷해서 붙여졌다.

입력의 범위가 10만이고 둘을 곱하면 int의 크기를 넘어가서 long으로 선언해야한다. 이것때문에 계속 틀렸다.

코드

import java.util.*;
import java.io.*;

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 [][] arr = new Long[n][2];
        double xy = 0;
        double yx = 0;

        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            arr[i][0] = Long.parseLong(st.nextToken());
            arr[i][1] = Long.parseLong(st.nextToken());
        }

        for (int i = 0; i < n; i++) {
            xy += arr[i][0] * arr[(i + 1) % n][1];
            yx += arr[i][1] * arr[(i + 1) % n][0];
        }

        double area = Math.abs(xy - yx) / 2.0;

        System.out.println(String.format("%.1f", area));
    }
}

profile
안녕하세요

0개의 댓글