プログラマ[レベル1]最小矩形


質問する


名刺入れを作っている会社は財布の大きさを確認したいです.様々な形や大きさの名刺を収納でき、コンパクトで持ち運びに便利な財布を作る必要があります.これらの要件を満たすために、設計チームはすべての名刺の横方向と縦方向の長さを調査した.
次の表に、4種類の名刺の水平と垂直の長さを示します.

最も長い横長と縦長はそれぞれ80と70であるため、80(横)x 70(縦)サイズの財布を作成すると、すべての名刺を収容することができる.ただし、横に2番の名刺を収納する場合は、80(横)x 50(縦)サイズの財布ですべての名刺を収納できます.財布のサイズは4000(=80 x 50)です.
パラメータは、すべての名刺の水平と垂直の長さを表す2 D配列サイズです.すべての名刺を収納できる最小財布を作成する場合は、財布の大きさを返すための解関数を完了します.

せいげんじょうけん

  • サイズの長さは1,000より大きい.
  • sizeの要素は[w,h]形式です.
  • wは名刺の横長を表す.
  • hは名刺の縦の長さを表す.
  • wおよびhは1000より大きい自然数である.
  • I/O例



    に答える

    function solution(sizes) {
        let n = sizes.length;
        let table = sizes.map(e => e.sort((a,b) => b-a));
        let row = table.map(e => e[0]); // 행만
        let col = table.map(e => e[1]); // 열만
        let answer = Math.max(...row) * Math.max(...col);
        return answer;
    }
    各要素を降順で並べ替えた後、列と行に分けて、それぞれ最大値を求めます.ソートの原因は、問題が発生した横、縦の変化です.