Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions computational-geometry/boj-2166/1.analysis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
# 다각형의 면적

## 📌 문제 요약

2차원 평면상에 N개의 점으로 이루어진 다각형이 있다. 이 다각형의 면적을 구하는 프로그램을 작성하시오.

---

## 🔍 문제 설명

* 2차원 좌표 평면 위에 N개의 점이 주어진다
* 이 점들을 순서대로 이으면 다각형이 된다
* 다각형의 면적을 구해야 한다
* 면적은 소수점 아래 둘째 자리에서 반올림하여 첫째 자리까지 출력한다

---

## 📥 입력 조건

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

---

## 📤 출력 조건

* 첫째 줄에 면적을 출력한다
* 면적을 출력할 때에는 소수점 아래 둘째 자리에서 반올림하여 첫째 자리까지 출력한다

---

### 📌 핵심 제약 조건

1. **다각형의 점 순서**
- 점들이 주어진 순서대로 이어져야 한다
- 점의 순서가 바뀌면 다른 다각형이 될 수 있다

2. **좌표 범위**
- 모든 좌표는 정수
- 범위: -100,000 ~ 100,000
- 오버플로우 주의 필요 (int 범위를 넘을 수 있음)

3. **면적 계산**
- 다각형이 시계 방향인지 반시계 방향인지에 따라 부호가 달라질 수 있다
- 절댓값을 사용하여 항상 양수 면적을 구해야 한다

**예시 분석:**
```
예제: 4개의 점
(0, 0) → (0, 10) → (10, 10) → (10, 0)
→ 정사각형의 면적 = 10 × 10 = 100
```

---

## ✨ 예시

### 예시 1

**입력**
```
4
0 0
0 10
10 10
10 0
```

**출력**
```
100.0
```

**설명**:
* 4개의 점 (0,0), (0,10), (10,10), (10,0)로 이루어진 정사각형
* 면적 = 10 × 10 = 100

### 예시 2 (삼각형)

**입력**
```
3
0 0
4 0
2 3
```

**출력**
```
6.0
```

**설명**:
* 3개의 점으로 이루어진 삼각형
* 밑변 4, 높이 3인 삼각형의 면적 = 4 × 3 / 2 = 6

---

## 📝 정리

이 문제는 **다각형의 면적을 구하는 계산 기하학 문제**로, 신발끈 공식(Shoelace Formula)을 활용하여 해결할 수 있다.

**문제의 특징:**
- 입력 크기: N개의 점 (3 ≤ N ≤ 10,000)
- 시간 복잡도 O(N)으로 해결 가능
- 계산 기하학의 기본 문제로, 다각형 면적 계산을 학습하기에 적합

**핵심 포인트:**
- 점들을 순서대로 이어서 다각형을 만든다
- 신발끈 공식을 사용하여 면적을 계산한다
- 면적은 항상 양수여야 하므로 절댓값을 사용한다

---

## 📚 관련 자료

> 📖 **계산 기하학 개요**: [../computational-geometry.md](../computational-geometry.md)를 참고하여 계산 기하학의 기본 개념과 다각형 면적 계산의 전반적인 이해를 돕습니다.

Loading