📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] 백준 2166 다각형의 면적 문제 풀이

Written by Donghak Park

문제 출처 : www.acmicpc.net/problem/2166

 

2166번: 다각형의 면적

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

www.acmicpc.net


문제 해석 : 다각형의 넓이를 구하는 문제이다.

 

문제 풀이 : 신발끈 공식을 활용해서 풀이할 수 있다.

 

풀이 시간 (기록용) : 40분 12초


풀이 코드

from collections import deque
import math


def ccw(x1, y1, x2, y2, x3, y3):
    return (x1 * y2 + x2 * y3 + x3 * y1) - (y1 * x2 + y2 * x3 + y3 * x1)


N = int(input())
x, y = map(int, input().split())

position = deque()
for _ in range(N-1):
    position.append(list(map(int, input().split())))

answer = 0
for i in range(N-2):
    answer += ccw(x, y,
                  position[i][0], position[i][1],
                  position[i+1][0], position[i+1][1])

print(round(abs(answer)/2, 1))

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.