Hanbit the Developer
[Python] 2166번: 다각형의 면적 본문
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부터 시작한다는 것을 유의하자.
'Algorithm > 백준' 카테고리의 다른 글
[Python] 백준 2467번: 용액(시간복잡도 2등) (0) | 2021.07.07 |
---|---|
[Python] 백준 2239번: 스도쿠 (0) | 2021.07.06 |
[Python] 백준 2098번: 외판원 순회 (0) | 2021.07.04 |
[Python] 백준 1806번: 부분합 (0) | 2021.07.02 |
[Python] 백준 1208번: 부분수열의 합2 (0) | 2021.07.01 |