CS기초/코딩테스트
LeetCode 1725 (Easy) Number Of Rectangles That Can Form The Largest Square
오늘의 나1
2021. 2. 24. 23:25
출처: leetcode.com/problems/number-of-rectangles-that-can-form-the-largest-square/
문제
한글 번역은 아래 더보기를 클릭해주세요.
더보기
사각형들의 배열이 주어지는 데, 여기서 rectangles[i] = [li, wi]는 길이가 li이고 너비가 wi인 i번째 사각형을 의미한다.
i번째 사각형을 잘라서 한 변의 길이가 k인 정사각형을 만들 수 있다. 이 때 k는 k <= li와 k <= wi를 모두 만족한다. 예를 들어, 사각형 [4, 6]을 잘라 한 변의 길이가 최대 4인 정사각형을 만들 수 있다.
maxLen을 주어진 사각형으로부터 얻을 수 있는 가장 큰 정사각형의 한 변의 길이라고 하자.
maxLen과 같은 길이의 정사각형을 만들 수 있는 사각형의 갯수를 반환하라.
예제 1:
- 입력: rectangles = [[5,8],[3,9],[5,12],[16,5]]
- 출력:3
- 설명: 각각의 사각형으로부터 얻을 수 있는 가장 큰 정사각형은 길이 [5,3,5,5]를 가진 정사각형이다. 이 중에서 가장 큰 정사각형은 길이 5인 정사각형이다. 그리고 길이 5인 정사각형을 총 3개의 사각형으로부터 얻을 수 있다.
예제 2:
- 입력: rectangles = [[2,3],[3,7],[4,3],[3,7]]
- 출력: 3
제약조건:
- 1 <= rectangles.length <= 1000
- rectangles[i].length == 2
- 1 <= li, wi <= 109
- li != wi
풀이
javascript
const countGoodRectangles = function (rectangles) {
let maxLen = 0;
let maxLenCnt = 0;
rectangles.forEach((rect) => {
const len = Math.min(rect[0], rect[1]);
if (len > maxLen) {
maxLen = len;
maxLenCnt = 1;
} else if (len === maxLen) {
maxLenCnt += 1;
}
});
return maxLenCnt;
};
python
class Solution:
def countGoodRectangles(self, rectangles: List[List[int]]) -> int:
maxLen = 0;
maxLenCnt = 0;
for rect in rectangles:
len = min(rect[0], rect[1])
if len > maxLen:
maxLen = len
maxLenCnt = 1
elif len == maxLen:
maxLenCnt += 1
return maxLenCnt;