Programming/백준
[골드 5] 백준 2166 - 다각형의 면적 (파이썬)
pental
2025. 5. 10. 15:22
https://www.acmicpc.net/problem/2166
풀이
- 평면 위의 N개의 꼭짓점이 주어지는 다각형의 면적을 구하라
- 정점 N개
- 면적을 소수점 첫째 자리까지 반올림
다각형의 꼭짓점 (x1, y1), (x2, y2), … , (xn, yn) 순서로 주어졌을때 면적은 신발끈 공식으로 해결 할 수 있다.
area = 0
for i in range(N):
x1, y1 = points[i]
x2, y2 = points[(i + 1) % N]
area += (x1 * y2) - (x2 * y1)
x1 * y2 - x2 * y1 항을 순서대로 모두 더해서 신발끈 공식의 분자 부분을 구한다.
(i + 1) % N 으로 마지막 점과 첫 점을 연결한다.
print(round(abs(area) / 2, 1))
절대값을 취한 뒤 2로 나누고, 소수점 첫째자리까지 반올림 하여 출력한다.
코드
# 백준 2166 - 다각형의 면적
# 분류 : 기하학
N = int(input())
points = [tuple(map(int, input().split())) for _ in range(N)]
area = 0
for i in range(N) :
x1, y1 = points[i]
x2, y2 = points[(i + 1) % N]
area += (x1 * y2) - (x2 * y1)
print(round(abs(area) / 2, 1))