다각형 면적을 어떻게 구할까라는 의문이 들었다.
삼각형, 사각형 이런 것들은 잘 알고 있지만, N 다각형은 도무지 몰랐다.
처음 생각한 것은 N각형은 삼각형의 집합으로 이루어져 있다는 것이다.
또한 삼각형의 좌표를 알면 넓이를 알 수 있기 때문이다.
하지만 삼각형을 어떻게 안겹치게 나눌지 고민이었다.
그래서 인터넷에 다각형 넓이 구하는 공식을 찾아보았다.
다각형 구하는 공식
신발끈 공식을 이용하면 된다.
신발끈 공식은 위에 URL에서 살펴보기 바란다.(삼각형 신발끈 공식 연장선 느낌?)
def solution():
n = int(sys.stdin.readline())
arr = list(list(map(int, sys.stdin.readline().split())) for _ in range(n))
arr.append(arr[0])
left, right = 0, 0
for i in range(n):
left += arr[i][0]*arr[i+1][1]
right += arr[i][1]*arr[i+1][0]
ans = abs(left - right) / 2
print(round(ans, 1))
solution()
하지만 신발끈 공식은 항상 시계, 반시계방향으로 좌표설정을 해주어야 하는 한계가 있다.
이 설정을 어떻게 해주어야 하나 고민이었지만 문제 자체에 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다.
조건을 주어져서 정렬할 필요는 없는 문제였다.