본문 바로가기

컴퓨터/BOJ

[BOJ](Python) 3049번 : 다각형의 대각선

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

 

3049번: 다각형의 대각선

세 대각선이 한 점에서 만나지 않는 볼록 N각형이 주어졌을 때, 대각선의 교차점의 개수를 세는 프로그램을 작성하시오. 아래 그림은 위의 조건을 만족하는 한 육각형의 교차점 그림이다. 모든 �

www.acmicpc.net

소스 코드는 다음과 같다.

import sys
n = int(input())
print(int(n*(n-1)*(n-2)*(n-3)/24))

이에 대한 수학적 풀이는 다음과 같다.

먼저 밑의 왼쪽 그림과 같이 7각형이 있다고 해보자.

 

임의의 7각형(왼쪽), 7각형에서 만들어지는 하나의 교점(오른쪽)

오른쪽 그림과 같이 7각형으로 만들어지는 두 대각선에서 하나의 교점이 만들어 질 수 있다.

즉, 7각형에서 4개의 꼭지점으로 하나의 교점이 만들어지며, 이러한 교점은 4개의 꼭지점이 정해졌을 때 유일하게 존재한다.

따라서 주어진 문제는 7C4 = 40이다. 만약 n각형이라면 답은 n * (n-1) * (n-2) * (n-3) / 24 이다.

출처: 3049번 질문의 답변, https://www.acmicpc.net/board/view/3039