코드 풀이

최소 직사각형

SammyK 2022. 3. 14. 17:08

풀이

function solution(sizes) {
    let arr = [0,0]
    sizes.forEach(el=>{
        let [l, s] = el.sort((a,b)=>b-a)
        if(l>arr[0]) arr[0] =l
        if(s>arr[1]) arr[1] =s
    })
    return arr[0]*arr[1]
}

먼저 size 라는 배열은 [ [60,50] , [30,70] , [30,60] , [80,40] ] 이렇게 들어온다

size 배열을 forEach 매소드를 이용해 배열속 인댁스안에 있는 element 들을 내림차순으로 정렬해주고

예:

[60,50]

[70,30]

[60,30]

[80,40]

 

배열속 index 0 값이 arr[0] 보다 크면 arr[0]에 저장

배열속 index 1 값이 arr[1] 보다 크면 저장하여

제일 큰 숫자들만 남게 저장된후 

곱한값을 리턴.

 

다른사람 풀이:

function solution(sizes) {
    let w = 0;
    let h = 0;
    sizes.forEach(s => {
        const [a, b] = s.sort((a,b) => a-b);
        if (a > h) h = a;
        if (b > w) w = b;
    });

    return w * h;
}

이분은 따로 미리 분리해서 값을 똑같이 저장후 곱한값을 리턴.


function solution(sizes) {
    const [hor, ver] = sizes.reduce(([h, v], [a, b]) => [Math.max(h, Math.max(a, b)), Math.max(v, Math.min(a, b))], [0, 0])
    return hor * ver;
}

 

'코드 풀이' 카테고리의 다른 글

숫자 문자열과 영단어  (0) 2022.03.15
소수 만들기  (0) 2022.03.15
같은 숫자는 싫어  (0) 2022.03.14
하샤드 수  (0) 2022.03.14
콜라츠 추측  (0) 2022.03.14