세 변의 길이가 주어졌을 때, 이 세 변이 실제로 하나의 삼각형을 만들 수 있는지 확인해야 하는 경우가 있습니다.
예를 들어 입력이 sides = [14, 20, 10]이라면 출력은 True가 됩니다. 가장 긴 변인 20이 나머지 두 변의 합(10 + 14 = 24)보다 작기 때문입니다.
삼각형 부등식 원리
삼각형이 성립하려면 삼각형 부등식(Triangle Inequality)을 만족해야 합니다. 즉, 세 변 중 가장 긴 변은 반드시 나머지 두 변의 합보다 작아야 합니다. 두 변의 합이 가장 긴 변보다 작거나 같으면 세 선분이 닫힌 도형을 이룰 수 없습니다.
해결 절차
- 먼저 변의 길이 리스트를 오름차순으로 정렬합니다.
- 가장 짧은 두 변의 합이 가장 긴 변보다 작거나 같으면 False를 반환합니다.
- 그 외의 경우에는 True를 반환합니다.
다음 구현 예제를 통해 더 자세히 이해해 보겠습니다.
예제 코드
def solve(sides):
sides.sort()
if sides[0] + sides[1] <= sides[2]:
return False
return True
sides = [14, 20, 10]
print(solve(sides))입력
[14, 20, 10]
출력
True
위 코드에서는 sides.sort()를 호출하여 세 변을 오름차순으로 정렬한 뒤, 가장 짧은 두 변의 합과 가장 긴 변을 비교합니다. 14 + 10 = 24가 20보다 크므로 조건을 통과해 True가 출력됩니다. 만약 입력이 [1, 2, 5]였다면 1 + 2 = 3이 5보다 작아 False가 반환됩니다.