기록하는삶

[코딩 테스트 연습(파이썬/Python)] 백준(BOJ) 2166번 _ 다각형의 면적 본문

백준(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)
728x90
반응형