import sys
import math
input = sys.stdin.readline
def BOJ2166() :
N = int(input())
x_points = []
y_points = []
for _ in range(N) :
x, y = map(int, input().split())
x_points.append(x)
y_points.append(y)
result = 0
for i in range(N) :
if i == N-1 :
result += x_points[i] * y_points[0]
else :
result += x_points[i] * y_points[i+1]
for i in range(N):
if i == N-1 :
result -= x_points[0] * y_points[i]
else :
result -= x_points[i+1] * y_points[i]
print(math.floor((abs(result) * 0.5 * 10) + 0.5) / 10)
BOJ2166()
접근 방법 :
0. 신발끈 공식을 사용했다.(링크는 아래에)
1. 신발끈 공식을 접근후에 반올림 처리만 잘 해주면 어렵지 않게 풀수 있다.
장애물 이였던 것 :
0. 공식의 존재에 관하여 알지 못했다.
1. 도형의 정중앙 지점을 구하고 꼭짓점중 인근한 두 지점을 구하려 했다.
2. n개의 삼각형이 만들어지므로 이들의 넓이 합을 전부 더해서 답에 접근하려 했었다.
3. 2번의 조합을 구하는 지점에서 어떻게 조합을 구하든 예외가 발생했고 공식의 유무를 찾기 시작했다.
https://www.acmicpc.net/problem/2166
2166번: 다각형의 면적
첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.
www.acmicpc.net
'알고리즘' 카테고리의 다른 글
사다리 [백준 2022] - python (0) | 2021.12.23 |
---|---|
후위 표기식 2[백준 1935] - python (0) | 2021.12.22 |
가장 긴 증가하는 부분 수열 4 [백준 14002] - python (0) | 2021.12.20 |
N번째 큰 수[백준 2075번] - python (0) | 2021.12.19 |
가장 긴 증가하는 부분 수열 3 (0) | 2021.12.18 |