重い箱がたくさんあるので、できるだけ少ない数のスタックに積み重ねたいと思っています。問題は、サポートできる以上のボックスをスタックできないため、より重いボックスをスタックの最下部に配置する必要があることです。
チャレンジ
入力:箱の重量のリスト(kg単位)。
出力:ボックスのスタックを説明するリストのリスト。これは、入力に可能な限り少ない数のスタックを使用する必要があります。有効なスタックであるためには、スタック内の各ボックスの重量が、その上のすべてのボックスの重量の合計以上でなければなりません。
有効なスタックの例
(下から上へ)
- [3]
- [1、1]
- [3、2、1]
- [4、2、1、1]
- [27、17、6、3、1]
- [33、32、1]
- [999、888、99、11、1]
無効なスタックの例
(下から上へ)
- [1、2]
- [3、3、3]
- [5、5、1]
- [999、888、777]
- [4、3、2]
- [4321、3000、1234、321]
テストケースの例
1
IN: [1, 2, 3, 4, 5, 6, 9, 12]
OUT: [[12, 6, 3, 2, 1], [9, 5, 4]]
2
IN: [87, 432, 9999, 1234, 3030]
OUT: [[9999, 3030, 1234, 432, 87]]
3
IN: [1, 5, 3, 1, 4, 2, 1, 6, 1, 7, 2, 3]
OUT: [[6, 3, 2, 1], [7, 4, 2, 1], [5, 3, 1, 1]]
4
IN: [8, 5, 8, 8, 1, 2]
OUT: [[8, 8], [8, 5, 2, 1]]
ルールと仮定
- 標準I / Oルールと禁止された抜け穴が適用されます
- I / Oに便利な形式を使用します
- スタックは、一貫している限り、上から下または下から上に記述できます。
- スタック内のボックスではなく、スタックの順序は関係ありません。
- 入力ボックスを事前に並べられたリストとして使用することもできます。一般的な問題がソート自体で解決されない限り、入力にとって順序は特に重要ではありません。
- スタックの最適な構成が複数ある場合は、それらのいずれかを出力できます
- 少なくとも1つの箱があり、すべての箱の重量が少なくとも1 kg
- 最低9,999 kgの重量をサポートする必要があります。
- 最低で合計9,999個のボックスをサポートする必要があります。
- 同じ重量のボックスは見分けがつかないため、どのボックスがどこで使用されたかを注釈する必要はありません。
ハッピーゴルフ!がんばろう!
2
ソートされた順序で重みを取得できますか?(昇順または降順)
—
Arnauld
「最小で合計9,999個のボックスをサポートする必要があります。」ここで「サポート」はどのように解釈されますか?それは、プログラムがそのようなサイズの入力を受け入れることができることを単に意味するのか、それともプログラムが妥当な時間内に実際に答えを提供することを意味するのか?後者の場合、はるかに大きなテストケースが提供されるはずです。
—
ジョエル
推奨されるテストケース:
—
Hiatsu
[8, 8, 8, 5, 1]
->[[8, 8], [8, 5, 1]]
またはそれ以上:
—
Hiatsu
[8, 5, 8, 8, 1, 2]
->[[8, 8], [8, 5, 2, 1]]
@Arnauld、そうでなければそれは答えに無意味なソートコードを追加するので、私はyesと言うつもりです、あなたはソートされた順序で入力を取り込むことができます。
—
ビーフスター