본문 바로가기
코테 공부 🔥

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

by 서니서닝 2023. 4. 5.
728x90

https://www.acmicpc.net/problem/2166

 

2166번: 다각형의 면적

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

www.acmicpc.net

문제 요약 : 2차원 평면상에 N(3 ≤ N ≤ 10,000)개의 점으로 이루어진 다각형이 있다. 이 다각형의 면적을 구하라

예제 입력 1:

4
0 0
0 10
10 10
10 0

예제 출력 1 :

100.0

 

 

나의 편향된 solve ac..

잡다에서 구현역량 테스트 ad 단계 문제를 풀었다.

그런데 도형, 기하학 문제가 나온 것..!

예전에 프로그래머스에서 레벨테스트 했을 때도 도형 문제가 나와서 애를 먹었던 기억이 있었다. 아무래도 일반적인 코테에서 dp나 그래프, 구현 문제가 많으니까 그 위주로만 풀었던 것이 이렇게 큰 편차를 보여준게 아닌가 싶어졌다.

그래서 도전한 기하학, 수학 골드 문제!!😣💪

 

 

📌 풀이 )

이렇게 풀면 반칙(?)인가 싶지만, 고등학교 때 입시를 한 학생들이라면 모두 알만한 공식이 있다.

도형의 좌표들을 알고 그 도형의 면적을 구해야할 때에 x좌표 y좌표를 좌르르 작성해서 꼽표 모양으로 만들어서 앞에값에서 뒤에 값 빼는 문제!! (이를 위해 첫 좌표를 마지막에 한번 더 적어줘야한다.)

바로 이 공식이다. 그래서 바로 이 공식을 적용했다.

다각형 도형의 면적 구하기에 대한 내용을 검색해봤는데, 엄청 잘 정리해놓으신 포스팅이 있어서 링크를 걸어놓겠다.

다각형 도형의 면적(넓이)구하기

 

다각형 도형의 면적(넓이) 구하기

프로그래밍 등을 할 때 알아두면 유용한 다각형의 면적 구하는 방법입니다.(오랜만에 수학관련 포스팅을 합니다 ^^) 1. 2차원 평면에서 세 점의 좌표를 알 때 삼각형 면적 구하기 세 점의 좌표를 (

darkpgmr.tistory.com

# 다각형의 면적
N = int(input())
figure = []

for _ in range(N):
    figure.append(list(map(int,input().split(' '))))
figure.append(figure[0])

answer = 0
for i in range(N):
    answer += figure[i][0]*figure[i+1][1] - figure[i+1][0]*figure[i][1]

print(abs(answer)/2)

728x90

댓글