Hanbit the Developer

[Python] 2166번: 다각형의 면적 본문

Algorithm/백준

[Python] 2166번: 다각형의 면적

hanbikan 2021. 7. 5. 19:44

https://www.acmicpc.net/problem/2166

 

import sys
input = sys.stdin.readline


def getPolygonArea():
    polygonArea = 0
    x0, y0 = x[0], y[0]

    for i in range(1, N-1):
        polygonArea += (
            (x[i] - x0) * (y[i+1] - y0) - (x[i+1] - x0) * (y[i] - y0)
        ) / 2

    return abs(polygonArea)


if __name__ == '__main__':
    N = int(input())

    x, y = [], []
    for _ in range(N):
        curX, curY = list(map(int, input().split()))
        x.append(curX)
        y.append(curY)

    polygonArea = getPolygonArea()
    print(round(polygonArea, 1))

 

아래의 식을 구현하면 끝이다. 오목할 때, 볼록할 때를 모두 포괄할 수 있는 일반적인 공식이다.

다만, 수학에서는 i가 0이 아니라, 1부터 시작한다는 것을 유의하자.