Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 주어진 각도로 정다각형을 만들 수 있는지 확인하는 방법


각도 a가 주어졌을 때, 모든 내각이 a와 동일한 정다각형(regular polygon)을 만들 수 있는지 확인하는 문제입니다.

예를 들어 입력값이 a = 120이라면 결과는 True가 됩니다. 육각형의 모든 내각이 120°이기 때문입니다.

수학적 원리

변의 개수가 n인 정다각형의 내각 공식은 다음과 같습니다.

$$Interior\ Angle(a)=\frac{180\times(n-2)}{n} \quad [n=\text{다각형의 변의 개수}]$$

이 식을 n에 대해 정리하면 다음과 같습니다.

$$n=\frac{360}{180-a}$$

즉, 계산된 n이 정수라면 해당 각도를 내각으로 가지는 정다각형이 존재한다는 뜻입니다.

참고로 대표적인 예시는 다음과 같습니다.

  • a = 60° → 삼각형 (n = 3)
  • a = 90° → 사각형 (n = 4)
  • a = 108° → 오각형 (n = 5)
  • a = 120° → 육각형 (n = 6)

반면 a가 180° 이상이거나 위 공식의 결과가 정수가 아니라면, 그 각도를 내각으로 하는 정다각형은 만들 수 없습니다.

해결 접근 방법

이 문제는 다음 단계로 해결할 수 있습니다.

  • sides := 360 / (180 - a) 를 계산합니다.
  • sides에 소수 부분이 없다면(즉, 정수라면) True를 반환합니다.
  • 그렇지 않으면 False를 반환합니다.

예제 코드

아래 구현 예시를 통해 더 잘 이해해 보겠습니다.

def solve(a):
    sides = 360 / (180 - a)
    if sides == int(sides):
        return True
    return False

a = 120
print(solve(a))

입력

120

출력

True

복잡도 분석

이 알고리즘은 단순히 나눗셈 한 번과 정수 비교만 수행하므로 시간 복잡도는 O(1), 공간 복잡도 역시 O(1)입니다.

또한 실전 코드에서는 a ≥ 180일 경우 0으로 나누거나 음수가 되는 상황이 발생할 수 있으므로, 입력 값의 범위 검증을 추가하는 것이 안전합니다.