백준 온라인 저지 [BOJ]/PYTHON [파이썬]
[백준(BOJ)] 2166번 : 다각형의 면적 - PYTHON[파이썬]
퉁이리
2021. 11. 16. 02:44
반응형
https://www.acmicpc.net/problem/2166
⊙ 문제
⊙ 입력
⊙ 출력
⊙ 예제 입출력
⊙ 알고리즘 분류
- 기하학
- 다각형의 넓이
⊙ 문제 접근 과정
학창 시절 수학 시간에 배웠던 '신발끈 공식'
신발끈 공식을 사용하면 바로 풀 수 있다.
🔎 신발끈 공식이란?
적색 화살표가 지나는 원소들의 곱의 합에서 한 청색 화살표가 지나는 원소들의 곱이 합을 빼어 절댓값을 취하면 된다.
사진에 보면 x는 x좌표이고 y는 y좌표를 말한다.
한 가지 주의해야 할 점은 마지막에 첫 번째 (x, y) 좌표를 꼭 추가해주어야 한다.
그래서 저는 plus와 minus 변수를 사용하여 청색 화살표와 적색 화살표를 더해 모아주어
아래의 코드와 같이 구현했다.
⊙ 문제 풀이
import sys
import math
input = sys.stdin.readline
N = int(input())
shoelaces = list()
for _ in range(N):
x, y = map(int, input().split())
shoelaces.append((x, y))
shoelaces.append(shoelaces[0])
plus = 0
minus = 0
for i in range(len(shoelaces)-1):
plus += (shoelaces[i][0] * shoelaces[i+1][1])
minus += (shoelaces[i][1] * shoelaces[i+1][0])
result = math.fabs(0.5 * (plus-minus))
print("%.1f" % result)
⊙ 결과
⊙ 마무리
NONE
좋아요는 로그인하지 않아도 누를 수 있습니다!
728x90
반응형