특정 직사각형 웹 페이지 영역이 있다고 가정하고 다음 요구 사항을 충족하는 길이 L과 너비 W인 직사각형 웹 페이지를 디자인하는 것이 우리의 임무입니다.
-
웹 페이지의 영역은 지정된 대상 영역과 같아야 합니다.
-
너비 W는 길이 L보다 크지 않아야 하며 L>=W입니다.
-
L과 W의 차이는 가능한 한 작아야 합니다.
따라서 입력이 4와 같으면 대상 영역이 4이므로 출력은 [2,2]가 되고 구성할 수 있는 모든 방법은 [1,4], [2,2], [4 ,1]. 여기에서 요구 사항에 따라 2, [1,4]는 불법입니다. 요구 사항 3에 따르면 [4,1]은 [2,2]에 비해 적절하지 않습니다. 따라서 길이 L은 2이고 너비 W는 2입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
초기화 i :=면적의 제곱근의 경우, i> 0일 때 업데이트(i를 1만큼 감소), 수행 -
-
면적 mod i가 0과 같으면 -
-
배열 v 정의, {area/i, i}
삽입 -
리턴 v
-
-
-
반환 {-1, -1}
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: vector<int> constructRectangle(int area) { for (int i = sqrt(area); i > 0; i--) { if (area % i == 0) { vector<int> v{ area / i, i }; return v; } } return { -1, -1 }; } }; main(){ Solution ob; print_vector(ob.constructRectangle(4)); }
입력
4
출력
[2, 2, ]