본문 바로가기

programmers

[프로그래머스] Lv1. 최소직사각형 (javascript)

다양한 사이즈의 명함을 넣을 수 있는 최소 직사각형의 크기 구하기

제한사항

  • sizes의 길이는 1 이상 10,000 이하입니다.
    • sizes의 원소는 [w, h] 형식입니다.
    • w는 명함의 가로 길이를 나타냅니다.
    • h는 명함의 세로 길이를 나타냅니다.
    • w와 h는 1 이상 1,000 이하인 자연수입니다.

나의 풀이

  • 각 명함의 사이즈(sizes)들 중 큰 값을 w, 작은 값을 h 로 각각 저장 
  • w와 h의 최댓값을 구하여 곱함
function solution(sizes) {
    const {w, h} = sizes.reduce((a, b) => {
        b.sort((a, b) => +a > +b ? -1 : 0);
        a['w'].push(+b[0]);
        a['h'].push(+b[1]);

        return a;
    }, {w: [], h: []});
    
    const max_w = Math.max(...w);
    const max_h = Math.max(...h);
    
    return max_w * max_h;
}

결과