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

파이썬으로 직각삼각형 판별하기 – 세 변의 길이로 피타고라스 정리 적용하기

리스트에 담긴 세 변의 길이가 주어졌을 때, 이 세 변이 직각삼각형을 이루는지 판별해야 하는 경우가 있습니다.

예를 들어 입력이 sides = [8, 10, 6]이라면, 8² + 6² = 64 + 36 = 100 = 10²가 성립하므로 출력 결과는 True가 됩니다.

이 문제는 피타고라스 정리(a² + b² = c²)를 활용하면 간단하게 해결할 수 있습니다. 해결 과정은 다음과 같습니다.

해결 접근 방법

  • 먼저 리스트 sides를 오름차순으로 정렬합니다. 이렇게 하면 가장 큰 값(빗변 후보)이 마지막 위치에 오게 됩니다.
  • 정렬 후 sides[0]² + sides[1]²의 값이 sides[2]²와 같은지 비교합니다.
  • 두 값이 같으면 직각삼각형이므로 True를 반환합니다.
  • 같지 않으면 False를 반환합니다.

예제 코드

def solve(sides):
    sides.sort()
    if (sides[0]*sides[0]) + (sides[1]*sides[1]) == (sides[2]*sides[2]):
        return True
    return False

sides = [8, 10, 6]
print(solve(sides))

입력

[8, 10, 6]

출력

True

동작 원리 설명

직각삼각형에서 빗변(hypotenuse)은 항상 세 변 중 가장 길기 때문에, 리스트를 정렬하면 마지막 요소가 빗변이 됩니다. 따라서 나머지 두 변의 제곱합과 빗변의 제곱을 비교하는 것만으로 직각 여부를 정확히 판단할 수 있습니다.

참고로 이 알고리즘의 시간 복잡도는 정렬에 의해 결정되며, 세 개의 원소만 다루므로 사실상 상수 시간(O(1))으로 볼 수 있습니다. 또한 부동소수점 오차를 피하고 싶다면 입력값을 정수로 유지하거나, 실수 입력에는 math.isclose() 함수를 사용해 근사 비교를 수행하는 것이 좋습니다.