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

Python으로 4개의 변이 직사각형을 이루는지 확인하는 방법

네 개의 변 길이가 담긴 리스트가 주어졌을 때, 이 네 변이 직사각형을 형성할 수 있는지 판별하는 문제를 살펴보겠습니다.

예를 들어 입력이 sides = [10, 30, 30, 10]이라면, 10과 30이 각각 두 개씩 짝을 이루고 있으므로 결과는 True가 됩니다.

해결 접근 방식

직사각형은 마주 보는 두 변의 길이가 서로 같아야 한다는 성질을 이용합니다. 다음 순서로 조건을 검사합니다.

  • 네 변의 길이가 모두 같다면(정사각형도 직사각형에 포함됨) True를 반환합니다.
  • sides[0]sides[1]이 같고, sides[2]sides[3]이 같다면 True를 반환합니다.
  • sides[0]sides[3]이 같고, sides[2]sides[1]이 같다면 True를 반환합니다.
  • sides[0]sides[2]가 같고, sides[3]sides[1]이 같다면 True를 반환합니다.
  • 위 조건 중 어느 것도 만족하지 않으면 False를 반환합니다.

구현 예제

아래 코드를 통해 더 쉽게 이해할 수 있습니다.

def solve(sides):
    if sides[0] == sides[1] == sides[2] == sides[3]:
        return True
    elif sides[0] == sides[1] and sides[2] == sides[3]:
        return True
    elif sides[0] == sides[3] and sides[2] == sides[1]:
        return True
    elif sides[0] == sides[2] and sides[3] == sides[1]:
        return True
    return False

sides = [10, 30, 30, 10]
print(solve(sides))

입력

[10, 30, 30, 10]

출력

True

정리

이 알고리즘은 최대 몇 번의 비교만으로 직사각형 여부를 판별하므로 시간 복잡도는 O(1)입니다. 네 변의 배열 순서에 따라 짝이 지어지는 위치가 달라질 수 있기 때문에, 가능한 모든 짝 조합을 검사하는 것이 핵심입니다. 참고로 이 방법은 변의 길이만으로 직사각형을 판별하므로, 실제 기하학적 배치(각도 등)까지 고려해야 하는 상황에서는 추가 검증이 필요할 수 있습니다.