[BOJ] Q2166 다각형의 면적
[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()
댓글남기기