最小長方形(JavaScript)
問題の説明
名刺入れを作っている会社は財布の大きさを確認したいです.様々な形や大きさの名刺を収納でき、コンパクトで持ち運びに便利な財布を作る必要があります.これらの要件を満たすために、設計チームはすべての名刺の横方向と縦方向の長さを調査した.
次の表に、4種類の名刺の水平と垂直の長さを示します.
名刺番号横長160502307030603048040
最も長い横長と縦長はそれぞれ80と70であるため、80(横)x 70(縦)サイズの財布を作成すると、すべての名刺を収容することができる.ただし、横に2番の名刺を収納する場合は、80(横)x 50(縦)サイズの財布ですべての名刺を収納できます.財布のサイズは4000(=80 x 50)です.
パラメータは、すべての名刺の水平と垂直の長さを表す2 D配列サイズです.すべての名刺を収納できる最小財布を作成する場合は、財布の大きさを返すための解関数を完了します.
せいげんじょうけん
sizesの長さは10000より大きい.
sizesの要素は[w,h]形式です.
w名刺の水平長さを表す.
hは名刺の垂直な長さを表す.
wとhは1以上1000以下の自然数である.
I/O例
sizesresult[[60, 50], [30, 70], [60, 30], [80, 40]]4000[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]]120[[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]]133
問題を解く
function solution(sizes) {
let answer = 0
let x = 0
let w = []
let h = []
let max_w = 0
let max_h = 0
for (let i = 0; i < sizes.length; i++){
x = sizes[i].sort((a,b) => a-b)
w.push(x[0])
h.push(x[1])
}
max_w = Math.max.apply(null, w)
max_h = Math.max.apply(null, h)
answer = max_w*max_h
return answer;
}
sort((a,b) => a-b)
名刺の横長と縦長の小さい値を横長に並べ替えます.名刺の横書きの中で、一番高い値段は
Math.max.apply(null, w)
で探しました.名刺の縦置きで一番高い値段は
Math.max.apply(null, h)
2つの値に戻りを乗算します.
Reference
この問題について(最小長方形(JavaScript)), 我々は、より多くの情報をここで見つけました https://velog.io/@weffa/최소직사각형javascriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol