Menu
CoddyTech

Minimum Cost of Ropes

MudahHeapGreedypython iconjava iconcpp iconc iconjs icon+10

Kamu memiliki beberapa tali, dan ropes[i] adalah panjang tali i. Kamu dapat menyambungkan dua tali mana pun menjadi satu tali dengan panjang yang merupakan jumlah panjang keduanya, dan biaya penyambungan itu sama dengan jumlah tersebut. Kamu terus menyambungkan tali hingga tersisa satu tali.

Tulis fungsi bernama minCostRopes yang mengembalikan total biaya terkecil untuk menyambungkan semua tali menjadi satu, atau 0 jika sejak awal hanya ada satu tali.

Fungsi

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
panjang setiap tali
Mengembalikaninteger
total biaya terkecil untuk menyambungkan semua tali menjadi satu

Batasan

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • Jawabannya muat dalam bilangan bulat bertanda 32-bit.

Contoh

Input
ropes = [5, 2, 8, 3]
Output
33
Penjelasan
Gabungkan 2 dan 3 menjadi 5, dua tali dengan panjang 5 menjadi 10, lalu 8 dan 10 menjadi 18. Totalnya adalah 5 + 10 + 18 = 33.
challenge icon

Pertanyaan lanjutan

Misalkan satu penyambungan dapat menggabungkan hingga tiga tali dan biayanya sebesar total panjang tali tersebut. Bagaimana aturan greedy berubah ketika jumlah tali tidak terbagi rata?

Reset kode
def minCostRopes(ropes):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

ropes = [5, 2, 8, 3]

Output yang diharapkan

33