[백준] 2166번 문제, 다각형의 면적
알고리즘
다각형 면적을 구하는 문제인데 수학에 강하다면 쉽게 풀 수 있다.
하지만 수학을 잘 모른다면 신발끈 정리을 보고 이해하면 쉽게 풀 수 있다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys
IN = sys.stdin.readline
if __name__ == "__main__":
n = int(IN())
x, y = [], []
answer = 0
for _ in range(n):
a, b = map(int, input().split())
x.append(a)
y.append(b)
# 마지막 점과 시작 점의 면적을 구하기 위해 맨 뒤에 시작점을 추가함
x, y = x + [x[0]], y + [y[0]]
# 신발끈 정리 적용
for i in range(n):
answer += (x[i] * y[i + 1]) - (x[i + 1] * y[i])
print(round(abs(answer) / 2, 1))