less than 1 minute read

알고리즘

다각형 면적을 구하는 문제인데 수학에 강하다면 쉽게 풀 수 있다.
하지만 수학을 잘 모른다면 신발끈 정리을 보고 이해하면 쉽게 풀 수 있다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys

IN = sys.stdin.readline

if __name__ == "__main__":
    n = int(IN())
    x, y = [], []
    answer = 0

    for _ in range(n):
        a, b = map(int, input().split())
        x.append(a)
        y.append(b)
    # 마지막 점과 시작 점의 면적을 구하기 위해 맨 뒤에 시작점을 추가함
    x, y = x + [x[0]], y + [y[0]]

    # 신발끈 정리 적용
    for i in range(n):
        answer += (x[i] * y[i + 1]) - (x[i + 1] * y[i])

    print(round(abs(answer) / 2, 1))