Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 너비의 오름차순이 아닌 순서로 직사각형을 재정렬할 수 있는지 확인

<시간/>

길이와 너비를 사용하여 표시되는 직사각형 목록이 있다고 가정합니다. 직사각형을 90도 회전할 수 있으므로 회전 후에 너비가 길이가 되고 그 반대도 마찬가지입니다. 너비가 증가하지 않는 순서로 직사각형을 정렬할 수 있는지 확인해야 합니다.

따라서 입력이 rects =[[4, 5], [5, 7], [4, 6]]과 같으면 회전하면 너비가 [5,7,6]이므로 출력은 True가 됩니다. 마지막 두 직사각형의 너비는 증가하지 않는 [5,5,4]가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • m :=99999
  • 0에서 rect 크기의 범위에 있는 i에 대해
    • i번째 직사각형의 길이와 너비의 최대값이 <=m이면
      • m :=i번째 직사각형의 길이와 너비의 최대값
    • 그렇지 않으면 i번째 직사각형의 길이와 너비의 최소값이 <=m
        인 경우
      • m :=i번째 직사각형의 길이와 너비의 최소값
    • 그렇지 않으면
      • 거짓을 반환
  • 참 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(rect):
   m = 99999
   for i in range(len(rect)):
      if max(rect[i][0], rect[i][1]) <= m:
         m = max(rect[i][0], rect[i][1])
      elif min(rect[i][0], rect[i][1]) <= m:
         m = min(rect[i][0], rect[i][1])
      else:
         return False
   return True
rects = [[4, 5], [5, 7], [4, 6]]
print(solve(rects))

입력

[[4, 5], [5, 7], [4, 6]]

출력

True