Z03

Kullanıcı Kümeleri

Başmühendis (Staff/Lead)
Hedef Süre: 40 - 50 Dakika
Tip: ARRAY

Teknik Tanım & Görev

Bir güvenlik ekibi, sahte hesapları tespit etmek için giriş kayıtlarını inceliyor. Her kayıt (kullanıcı adı, cihaz kimliği) ikilisinden oluşuyor. Kural şu: AYNI CİHAZI kullanan iki kullanıcı büyük olasılıkla aynı kişidir ve aynı KÜMEYE konur. Bir kullanıcı birden fazla cihaz kullanabilir; bu durumda o kullanıcının tüm cihazları, o cihazları paylaşan TÜM kullanıcıları tek bir kümede BİRLEŞTİRİR. Yani ilişki GEÇİŞLİDİR. Kayıtlar verildiğinde, oluşan kümelerin BOYUTLARINI (kümedeki BENZERSİZ kullanıcı sayısı) AZALAN SIRADA bir dizi olarak döndür.

Fonksiyon İmzası (Python)

kume_boyutlari(kayitlar: list[list[str]]) -> list[int]

Girdi ve Çıktı Sözleşmesi

Çıktı Kuralı:Azalan sırada sıralanmış küme boyutları. Boş kayıt listesi için [].

Sistem Kısıtları (Constraints)

0 <= kayitlar.length <= 10^5
kullanıcı adı ve cihaz kimliği boş olmayan ASCII metinler
AYNI (kullanıcı, cihaz) ikilisi birden fazla kez gelebilir

Örnek Yürütme Analizi

kayitlar = [["ali","d1"], ["zeynep","d1"], ["mert","d2"], ["can","d2"], ["cem","d3"], ["ali","d3"]]
küme A = {ali, zeynep, cem} boyut 3
küme B = {mert, can} boyut 2
cevap: [3, 2]

Örnek Test Senaryoları (3)

Örnek 1
Girdi:[[["ali","d1"],["zeynep","d1"],["mert","d2"],["can","d2"],["cem","d3"],["ali","d3"]]]
Beklenen Çıktı:[3,2]
Örnek 2: İki Ayrık Kullanıcı
Girdi:[[["u1","c1"],["u2","c2"]]]
Beklenen Çıktı:[1,1]
Örnek 3: Cihaz Üzerinden Birleşme
Girdi:[[["u1","c1"],["u1","c2"],["u2","c2"]]]
Beklenen Çıktı:[2]
Python Editörü Yükleniyor...
Girdi Parametreleri
[
  [
    [
      "ali",
      "d1"
    ],
    [
      "zeynep",
      "d1"
    ],
    [
      "mert",
      "d2"
    ],
    [
      "can",
      "d2"
    ],
    [
      "cem",
      "d3"
    ],
    [
      "ali",
      "d3"
    ]
  ]
]
Beklenen Çıktı
[
  3,
  2
]