파이썬 문제풀이

[백준 파이썬] 2166 다각형의 면적

냄비짱 2024. 1. 9. 00:18
728x90

📌문제 출처

백준 단계별 문제풀이 : 기하2
https://www.acmicpc.net/problem/2166

 

2166번: 다각형의 면적

첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.

www.acmicpc.net

❓ 문제

📗 풀이 코드

'''
벡터의 외적 계산을 통해 면적을 구하는 문제이다.
각 꼭지점의 좌표를 통해 넓이를 구하는 신발끈 공식을 활용해 풀 수 있다.
'''
input = open(0).readline

def solution():
    n = int(input())
    xs,ys = [],[]
    for _ in range(n):
        x,y = map(int,input().split())
        xs.append(x)
        ys.append(y)
    # 신발끈 공식을 활용한 계산
    def ccw(xs,ys): # n개의 점들의 x좌표, y좌표
        res = 0
        for i in range(n):
            res += xs[i]*ys[(i+1)%n] - xs[(i+1)%n]*ys[i]
        return res
    print(round(abs(ccw(xs,ys)/2),2)) # 방향을 제외한 절대값을 반올림

if __name__ == '__main__':
    solution()