Menu
CoddyTech

Minimum Cost of Ropes

Bazı iplerin var ve ropes[i], i. ipin uzunluğudur. Herhangi iki ipi, uzunluğu bu ikisinin toplamına eşit olan tek bir ipte birleştirebilirsin ve bu birleştirme aynı toplam kadar maliyetlidir. Geriye tek bir ip kalana kadar birleştirmeye devam edersin.

Tüm ipleri tek bir ipte birleştirmenin toplam maliyetinin en küçüğünü döndüren minCostRopes adlı bir fonksiyon yaz; başta yalnızca bir ip varsa 0 döndür.

Fonksiyon

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
her bir ipin uzunluğu
Döndürürinteger
her ipi tek bir ip hâline getirmenin en düşük toplam maliyeti

Kısıtlar

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • Yanıt, 32 bitlik işaretli bir tamsayıya sığar.

Örnekler

Girdi
ropes = [5, 2, 8, 3]
Çıktı
33
Açıklama
5 elde etmek için 2 ve 3'ü birleştir, 5 uzunluğundaki iki ipi birleştirerek 10 elde et, ardından 18 elde etmek için 8 ve 10'u birleştir. Toplam 5 + 10 + 18 = 33.
challenge icon

Ek soru

Birleştirmenin en fazla üç ipi birleştirebildiğini ve maliyetinin toplam uzunlukları olduğunu varsayalım. İp sayısı eşit bölünmediğinde açgözlü kural nasıl değişir?

Kodu sıfırla
def minCostRopes(ropes):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argüman

ropes = [5, 2, 8, 3]

Beklenen Çıktı

33