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;

결과