[LeetCode] Number Of Rectangles That Can Form The Largest Square

준규·2022년 9월 8일
0

직사각형의 세로 length , 가로 width값으로 이루어져 있는 직사각형 배열을 원소로 가지는 이차원 배열이 주어질 때

각 직사각형을 가지고 만들 수 있는 정사각형을 생각해보자

만약 직사각형의 세로 가로 길이가 [4, 6]이라면 만들 수 있는 정사각형 한 변의 길이는 4이다 (즉 직사각형의 가로 세로 길이중 최솟값이 정사각형의 한 변의 길이가 된다).

이 때 만들 수 있는 정사각형 한변의 길이 중에서 가장 긴 변을 가지는 정사각형의 갯수를 리턴하는 문제이다

Example을 보자

1번 예제의 경우 직사각형들의 배열이 주어질 때 각 직사각형의 배열의 최솟값을 뽑아서 다시 배열을 만들어보면 결과가 [5,3,5,5]가 된다

이 배열의 최댓값인 5가 최대길이 정사각형이 되고 길이가 5인 정사각형은 3개 만들 수 있으므로 3이 리턴된다

const countGoodRectangles = function(rectangles) {
    const length = rectangles.map((rectangle) => {
        return Math.min(rectangle[0], rectangle[1]);
    });
    
    let dic = {};
    
    for(let i = 0; i < length.length; i++) {
        dic[length[i]] = dic[length[i]] ? dic[length[i]]+1 : 1;
    }
    
    return dic[Math.max(...length)]
};

먼저 주어진 이차원 배열을 map 을 이용하여 각각 요소의 0번 인덱스 값과 1번 인덱스 값중 최솟값만 가져와서 새로운 배열 length를 만들고

length를 순회하면서 정사각형 변의 중복 횟수를 dic 객체에 저장을 하였다

그런다음 length의 최댓값을 키로 가지는 dic 객체의 value 값을 리턴해주었다

submit을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글