C++ - 백준 3049 다각형의 대각선
2024. 11. 17. 16:45ㆍC_C++
728x90
반응형
/* 백준 3049 다각형의 대각선
https://www.acmicpc.net/problem/3049
* 문제
세 대각선이 한 점에서 만나지 않는 볼록 N각형이 주어졌을 때, 대각선의 교차점의 개수를 세는
프로그램을 작성하시오.
아래 그림은 위의 조건을 만족하는 한 육각형의 교차점 그림이다.
https://upload.acmicpc.net/2afc17c7-9814-4678-b876-b082ea89b995/-/preview/
모든 내부각이 180도보다 작은 다각형을 볼록 다각형이라고 한다.
* 입력
첫째 줄에 N이 주어진다. (3 ≤ N ≤ 100)
* 출력
첫째 줄에 교차점의 개수를 출력한다.
* 예제 입력 1
3
* 예제 출력 1
0
* 예제 입력 2
4
* 예제 출력 2
1
* 예제 입력 3
6
* 예제 출력 3
15
* 풀이
일단 세 대각선이 한 점에서 만나지 않는다는 조건을 이해해야 합니다.
그림에서 가운데 부분에 점이 하나로 만나지 않고 세 개의 점으로 만난다는 것을 이해해야 합니다.
그렇다면 이제, 대각선의 교차점을 하나 만들려고 하면 어때야 하는지 생각해 봅시다.
+-------+
|\ /|
| \ / |
| \ / |
| X |
| / \ |
| / \ |
|/ \|
+-------+
결론은 꼭지점이 4개면 하나의 교차점을 만들 수 있습니다.
이제 최종적으로, N 각형에서 몇 개의 교차점이 생기느냐
== N 각형에서 4개의 꼭지점을 고르는 경우의 수와 같다
==> NC4 (조합)
과 같은 문제가 됩니다.
n!
nCr = --------
(n-r)!r!
n! n(n-1)(n-2)(n-3) n(n-1)(n-2)(n-3) n(n-1)(n-2)(n-3)
nC4 = -------- = ---------------- = ---------------- = ----------------
(n-4)!4! 4! 4x3x2x1 24
가 됩니다.
*/
#include <iostream>
int main() {
int n;
std::cin >> n;
std::cout << n * (n - 1) * (n - 2) * (n - 3) / 24 << '\n';
}
728x90
반응형
'C_C++' 카테고리의 다른 글
C++ - 백준 2484 주사위 네개 (1) | 2024.11.17 |
---|---|
C++ - 백준 3059 등장하지 않는 문자의 합 (0) | 2024.11.17 |
C++ - 백준 4493 가위 바위 보? (2) | 2024.11.15 |
C++ - 백준 5524 입실 관리 (0) | 2024.11.15 |
C++ - 백준 2592 대표값 (0) | 2024.11.14 |