백준(Python)/기하학(Geometry)
[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 2166번 _ 다각형의 면적
mingchin
2022. 2. 15. 21:46
728x90
반응형
https://www.acmicpc.net/problem/2166
2166번: 다각형의 면적
첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.
www.acmicpc.net
[문제]
2차원 평면상에 N(3 ≤ N ≤ 10,000)개의 점으로 이루어진 다각형이 있다. 이 다각형의 면적을 구하는 프로그램을 작성하시오.
[입력]
첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.
[출력]
첫째 줄에 면적을 출력한다. 면적을 출력할 때에는 소수점 아래 둘째 자리에서 반올림하여 첫째 자리까지 출력한다.
[아이디어]
1) n개의 점을 이용해 원점을 꼭짓점으로 하는 삼각형 (n-1)개를 만든다고 생각하자.
2) 반올림을 따로 해줄 필요는 없다.
n = int(input())
g = []
for _ in range(n):
x,y = map(int, input().split())
g.append((x,y))
g.append(g[0])
ans = 0
for i in range(n):
ans += (g[i][0]*g[i+1][1] - g[i][1]*g[i+1][0])
print(abs(ans)/2)