Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🔗 문제 링크
다각형의 면적
✔️ 소요된 시간
5시간
✨ 수도 코드
❓ 문제
n각형의 꼭지점 n개의 좌표 (x, y) 가 다각형을 이루는 순서대로 주어진다. 이 다각형의 면적을 구하자
❗ 풀이
요즘 푸는 문제마다 왜 다 이 꼴인지 모르겠다..
1️⃣ 첫번째 풀이
다각형을 포함하는 x, y축에 평행한 가장 작은 직사각형
을 그린 뒤, 다각형에 포함되지 않는 범위를 하나씩 빼나가는 방식이다.즉 아래의 파란 다각형에 대해 주황색 부분을 빼서 전체의 넓이를 구하는 방식이다.
![image](https://private-user-images.githubusercontent.com/83621666/335659457-5669b15a-373a-430d-b366-f54500a3b71d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyMDEwNTQsIm5iZiI6MTczOTIwMDc1NCwicGF0aCI6Ii84MzYyMTY2Ni8zMzU2NTk0NTctNTY2OWIxNWEtMzczYS00MzBkLWIzNjYtZjU0NTAwYTNiNzFkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDE1MTkxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTMwY2YwMGQxYzU3NjI5ZTAxYzBlZDBkOWM5MzU0ZWMxNjBiNTJmMDVjZWUwMTc3ODZhN2Q3MGM4MGNiYmRlNjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.1rMtGhhXoRVv1o6Zju41A_lNVoIR5PjemU1tB23_iQo)
다각형의 한 변을 포함하며 다각형의 내부에 포함되지 않는 삼각형(초록색)을 그려 변의 개수 만큼 빼주는 방식이다.
이미지 예제
그렇게 바깥 삼각형을 모두 빼고 나면 다각형의 넓이만 남게 된다는 풀이였다!
여기서 어려웠던 점은
다각형의 각 변
과큰 사각형의 어느 꼭지점
을 연결해야하는지 판단해야하는 부분이였다.이 부분은 모든 꼭지점을 x 기준으로 정렬한 뒤 각 꼭지점을 시계방향으로 순회하는데, 탐색하는 꼭지점이 사각형의 각 변에 닿으면 다음 꼭지점과 이어주는 방식으로 구현했다.
이미지 예제
소스코드
열심히 적긴 했는데 위 풀이는 틀렸다. 다각형이 오목한 다각형도 존재하기 때문이다...!
오류 예시
위 노란색 사각형 같은 오류가 생긴다..!
3시간동안 열심히 짠 로직이지만 다시 생각할 필요가 생겼다..
2️⃣ 두번째 풀이
얼마전에 친구가 폐곡선 면적을 구할 때
도형의 윗 부분에 대한 적분
에서아랫부분에 대한 적분
을 빼면 폐곡선의 면적을 구할 수 있다고 한 것에서 아이디어를 얻었다.우선 계산을 단순하게 하기 위해서 다각형의 좌하단을 원점으로 삼았다.
이후 각 변마다 적분을 하는데, 여기서 꼭지점의 x의 진행 방향에 따라 더할지 말지 결정했다.
이미지 예시
위의 방식으로 푸는데 성공했다...!
소스코드
📚 새롭게 알게된 내용
수학 문제 재밌는데 난이도 진짜... 그래도 직접 풀었다는 것에 의의를 둔다.
원점 안옮기고 풀 수도 있던데 어떻게 하는지 모르겠다.