# M. Fauzan Al Zamzami - Magang Berdampak 2025 - Backend Developer Intern - Suitmedia
class Klasemen:
def __init__(self, list_klub):
self.poin = {}
for klub in list_klub:
self.poin[klub] = 0
def catat_permainan(self, klub_kandang, klub_tandang, skor):
skor_kandang, skor_tandang = map(int, skor.split(":"))
if skor_kandang > skor_tandang:
self.poin[klub_kandang] += 3
elif skor_kandang < skor_tandang:
self.poin[klub_tandang] += 3
else:
self.poin[klub_kandang] += 1
self.poin[klub_tandang] += 1
def cetak_klasemen(self):
klasemen = dict(sorted(self.poin.items(), key=lambda item: (-item[1], item[0])))
return klasemen
def ambil_peringkat(self, nomor_peringkat):
urutan_klub = list(self.cetak_klasemen().keys())
if 1 <= nomor_peringkat <= len(urutan_klub):
return urutan_klub[nomor_peringkat - 1]
else:
return None
klasemen = Klasemen(['Liverpool', 'Chelsea', 'Arsenal'])
klasemen.catat_permainan('Arsenal', 'Liverpool', '2:1')
klasemen.catat_permainan('Arsenal', 'Chelsea', '1:1')
klasemen.catat_permainan('Chelsea', 'Arsenal', '0:3')
klasemen.catat_permainan('Chelsea', 'Liverpool', '3:2')
klasemen.catat_permainan('Liverpool', 'Arsenal', '2:2')
klasemen.catat_permainan('Liverpool', 'Chelsea', '0:0')
print(klasemen.cetak_klasemen())
print(klasemen.ambil_peringkat(2))
IyBNLiBGYXV6YW4gQWwgWmFtemFtaSAtIE1hZ2FuZyBCZXJkYW1wYWsgMjAyNSAtIEJhY2tlbmQgRGV2ZWxvcGVyIEludGVybiAtIFN1aXRtZWRpYQoKY2xhc3MgS2xhc2VtZW46CglkZWYgX19pbml0X18oc2VsZiwgbGlzdF9rbHViKToKCQlzZWxmLnBvaW4gPSB7fQoJCWZvciBrbHViIGluIGxpc3Rfa2x1YjoKCQkJc2VsZi5wb2luW2tsdWJdID0gMAoJCglkZWYgY2F0YXRfcGVybWFpbmFuKHNlbGYsIGtsdWJfa2FuZGFuZywga2x1Yl90YW5kYW5nLCBza29yKToKCQlza29yX2thbmRhbmcsIHNrb3JfdGFuZGFuZyA9IG1hcChpbnQsIHNrb3Iuc3BsaXQoIjoiKSkKCQkKCQlpZiBza29yX2thbmRhbmcgPiBza29yX3RhbmRhbmc6CgkJCXNlbGYucG9pbltrbHViX2thbmRhbmddICs9IDMKCQllbGlmIHNrb3Jfa2FuZGFuZyA8IHNrb3JfdGFuZGFuZzoKCQkJc2VsZi5wb2luW2tsdWJfdGFuZGFuZ10gKz0gMwoJCWVsc2U6CgkJCXNlbGYucG9pbltrbHViX2thbmRhbmddICs9IDEKCQkJc2VsZi5wb2luW2tsdWJfdGFuZGFuZ10gKz0gMQoJCglkZWYgY2V0YWtfa2xhc2VtZW4oc2VsZik6CgkJa2xhc2VtZW4gPSBkaWN0KHNvcnRlZChzZWxmLnBvaW4uaXRlbXMoKSwga2V5PWxhbWJkYSBpdGVtOiAoLWl0ZW1bMV0sIGl0ZW1bMF0pKSkKCQlyZXR1cm4ga2xhc2VtZW4KCQkKCWRlZiBhbWJpbF9wZXJpbmdrYXQoc2VsZiwgbm9tb3JfcGVyaW5na2F0KToKCQl1cnV0YW5fa2x1YiA9IGxpc3Qoc2VsZi5jZXRha19rbGFzZW1lbigpLmtleXMoKSkKCQlpZiAxIDw9IG5vbW9yX3BlcmluZ2thdCA8PSBsZW4odXJ1dGFuX2tsdWIpOgoJCQlyZXR1cm4gdXJ1dGFuX2tsdWJbbm9tb3JfcGVyaW5na2F0IC0gMV0KCQllbHNlOgoJCQlyZXR1cm4gTm9uZQoJCQkKa2xhc2VtZW4gPSBLbGFzZW1lbihbJ0xpdmVycG9vbCcsICdDaGVsc2VhJywgJ0Fyc2VuYWwnXSkKa2xhc2VtZW4uY2F0YXRfcGVybWFpbmFuKCdBcnNlbmFsJywgJ0xpdmVycG9vbCcsICcyOjEnKQprbGFzZW1lbi5jYXRhdF9wZXJtYWluYW4oJ0Fyc2VuYWwnLCAnQ2hlbHNlYScsICcxOjEnKQprbGFzZW1lbi5jYXRhdF9wZXJtYWluYW4oJ0NoZWxzZWEnLCAnQXJzZW5hbCcsICcwOjMnKQprbGFzZW1lbi5jYXRhdF9wZXJtYWluYW4oJ0NoZWxzZWEnLCAnTGl2ZXJwb29sJywgJzM6MicpCmtsYXNlbWVuLmNhdGF0X3Blcm1haW5hbignTGl2ZXJwb29sJywgJ0Fyc2VuYWwnLCAnMjoyJykKa2xhc2VtZW4uY2F0YXRfcGVybWFpbmFuKCdMaXZlcnBvb2wnLCAnQ2hlbHNlYScsICcwOjAnKQoKcHJpbnQoa2xhc2VtZW4uY2V0YWtfa2xhc2VtZW4oKSkgIApwcmludChrbGFzZW1lbi5hbWJpbF9wZXJpbmdrYXQoMikpCg==