rect[i]에 두 개의 요소[len_i, wid_i]가 있는 rect라는 배열이 있다고 가정합니다. 여기서 len_i와 wid_i는 각각 i번째 직사각형의 길이와 너비를 나타냅니다. 이제 k <=lenn_i 및 k <=wid_i인 경우 i번째 직사각형을 잘라 변 길이가 k인 정사각형을 형성할 수 있습니다. 예를 들어 직사각형 [4,6]이 있는 경우 한 변의 길이가 최대 4인 정사각형을 얻기 위해 잘라낼 수 있습니다. 이제 maxLen이라는 매개변수를 얻을 수 있는 가장 큰 정사각형의 변의 길이라고 생각합니다. 주어진 직사각형 중 하나에서. 한 변의 길이가 maxLen인 정사각형을 만들 수 있는 직사각형의 수를 찾아야 합니다.
따라서 입력이 rect =[[6,9],[4,10],[6,13],[17,6]]과 같으면 출력은 가장 큰 변의 제곱을 얻을 수 있으므로 3이 됩니다. 6, 4, 6, 6]이므로 가장 큰 세 개의 직사각형이 있습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
m :=새 목록
-
각 r에 대해 다음을 수행하십시오.
-
m의 끝에 r의 최소 삽입
-
-
m에 존재하는 개수(m의 최대값) 및 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(rect): m = [] for r in rect: m.append(min(r)) return m.count(max(m)) rect = [[6,9],[4,10],[6,13],[17,6]] print(solve(rect))
입력
[[6,9],[4,10],[6,13],[17,6]]
출력
3