Menu
CoddyTech

Minimum Cost of Ropes

やさしいヒープ貪欲法python iconjava iconcpp iconc iconjs icon+10

いくつかのロープがあり、ropes[i]はロープiの長さです。任意の2本のロープを1本にまとめることができ、その長さは2本の長さの合計になり、まとめるコストも同じ合計です。ロープが1本だけになるまで、まとめ続けます。

すべてのロープを1本にまとめるための合計コストの最小値を返すminCostRopesという名前の関数を書いてください。最初からロープが1本しかない場合は、0を返します。

関数

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
各ロープの長さ
戻り値integer
すべてのロープを1本にまとめるための最小合計コスト

制約

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • 答えは32ビット符号付き整数に収まります。

例

入力
ropes = [5, 2, 8, 3]
出力
33
説明
2と3をつないで5にし、長さ5の2本のロープをつないで10にし、次に8と10をつないで18にします。合計は5 + 10 + 18 = 33です。
challenge icon

発展問題

結合によって最大3本のロープをつなげ、そのコストがロープの長さの合計だとします。ロープの本数が割り切れない場合、貪欲法のルールはどのように変わりますか?

コードをリセット
def minCostRopes(ropes):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

ropes = [5, 2, 8, 3]

期待される出力

33