[BOJ] Q2166 다각형의 면적

Question

Language: Python

Difficulty: Gold 5

주어진 점들로 이루어진 다각형 면적의 합은 사선공식을 이용하면 쉽게 풀이할 수 있다.

사선공식

A(x1,y1),B(x2,y2),C(x3,y3)…(xn,yn)

위의 다각형의 넓이는 아래의 공식을 통해 구할 수 있다.

0.5* x1y2+x2y3+ … x3yn+xny1 - y1x2+y2x3+ … y3xn + ynx1

아래와 같이 점 4개로 이루어진 다각형이 있다고 하면

A(x1,y1),B(x2,y2),C(x3,y3),D(x4,y4)

ABCD의 넓이는

0.5* x1y2+x2y3+x3y4+x4y1 - y1x2+y2x3+y3x4 + y4x1

을 통해 구할 수 있다.

Solution

def solution():
    x,y=0,1
    zero_point=points[0]
    points.append(zero_point)

    plus,minus=0,0

    for i in range(num):
        plus+=(points[i][x]*points[i+1][y])
        minus+=(points[i][y]*points[i+1][x])
    area=0.5*(abs(plus-minus))
    print(round(area,1))

if __name__ == "__main__":
    num=int(input())
    points=[list(map(int,input().split())) for _ in range(num)]
    solution()

댓글남기기