O03

En Değerli Müşteriler

Kıdemli Aday (Mid/Senior)
Hedef Süre: 25 - 35 Dakika
Tip: ARRAY

Teknik Tanım & Görev

Bir e-ticaret sitesinin sipariş kayıtları, (müşteri adı, sipariş tutarı) ikilileri hâlinde tutuluyor. Aynı müşteri birden fazla sipariş vermiş olabilir; o müşterinin DEĞERİ, tüm sipariş tutarlarının TOPLAMIdır. Pazarlama ekibi en değerli k müşterisini bir kampanyaya dahil etmek istiyor. Müşterileri toplam tutarlarına göre AZALAN sırada diz. TOPLAM TUTARI EŞİT olan müşteriler arasında ise alfabetik olarak ÖNCE GELEN önce yazılsın. Bu sıralamadaki İLK k müşterinin adını dizi olarak döndür.

Fonksiyon İmzası (Python)

en_degerli_musteriler(siparisler: list, k: int) -> list[str]

Girdi ve Çıktı Sözleşmesi

Çıktı Kuralı:En fazla k elemanlı string dizisi. Müşteri sayısı k'dan azsa TÜM müşteriler döner. Sipariş listesi boşsa [].

Sistem Kısıtları (Constraints)

0 <= siparisler.length <= 10^5
1 <= k <= 10^3
tutarlar pozitif tam sayı
müşteri adları küçük ASCII harf

Örnek Yürütme Analizi

siparisler = [["ali",100], ["zeynep",300], ["ali",250], ["mert",300], ["can",50]]
toplamlar: ali=350, zeynep=300, mert=300, can=50
azalan tutar: ali(350), sonra zeynep(300) ve mert(300) EŞİT -> alfabetik: mert, zeynep
k=3 -> cevap: ["ali", "mert", "zeynep"]

Örnek Test Senaryoları (3)

Örnek 1
Girdi:[[["ali",100],["zeynep",300],["ali",250],["mert",300],["can",50]],3]
Beklenen Çıktı:["ali","mert","zeynep"]
Örnek 2: İki Müşteri Toplamı
Girdi:[[["kerem",500],["asli",400],["kerem",100]],2]
Beklenen Çıktı:["kerem","asli"]
Örnek 3: Eşit Tutar Alfabetik Sıra
Girdi:[[["ali",50],["veli",50]],1]
Beklenen Çıktı:["ali"]
Python Editörü Yükleniyor...
Girdi Parametreleri
[
  [
    [
      "ali",
      100
    ],
    [
      "zeynep",
      300
    ],
    [
      "ali",
      250
    ],
    [
      "mert",
      300
    ],
    [
      "can",
      50
    ]
  ],
  3
]
Beklenen Çıktı
[
  "ali",
  "mert",
  "zeynep"
]