من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

حل تمرین مسابقه اشپزی کوئرا با پایتون

حل تمرین مسابقه آشپزی کوئرا با پایتون
حل تمرین مسابقه آشپزی کوئرا با پایتون

حل تمرین مسابقه اشپزی کوئرا با پایتون

در این نوشته به روش حل یکی از سوالات پیاده سازی برنامه نویسی وب‌سایت کوئرا می‌پردازیم.

 

حل تمرین مسابقه اشپزی کوئرا با پایتون

امیر که حوصله‌اش سر رفته یک مسابقه آشپزی را تماشا می‌کند؛ در این مسابقه 106 نفر از آشپزان سرتاسر کشور شرکت‌ کرده‌اند و n داور مسابقه به آن‌ها رای می‌دهند تا برنده مسابقه مشخص شود. شیوه رای‌دهی داوران به این صورت است که هر داور حداکثر می‌تواند سه نفر را انتخاب کند و به انتخاب اول، دوم و سومش به ترتیب 3، 2 و 1 امتیاز بدهد. توجه کنید که هر داور می‌تواند یک یا دو انتخاب داشته و در این صورت به رای یک امتیازی و یا دو امتیازی خود را از دست می‌دهد. حال همه داوران امتیازهای خود را داده‌اند و امیر منتظر است تا برنده نهایی مشخص شود؛ ولی چون خیلی استرس دارد نتیجه رای‌گیری را به شما می‌دهد و از شما می‌خواهد تا برنده(ها)ی مسابقه را مشخص کنید. توجه کنید که برنده مسابقه آشپزی کسی است که مجموع امتیازی که گرفته از هیچ آشپزی کم‌تر نشود؛ بنابراین ممکن است مسابقه چند برنده داشته و در این صورت شما باید همه برنده‌ها را چاپ کنید.

 

ورودی

ورودی شامل تعدادی تست است (سوال تنها یک تست دارد که همه تست‌ها در آن جمع شده‌اند). در خط اول هر ورودی عدد n آمده که تعداد داور‌ها است. سپس در n خط بعدی، ابتدا یک عدد di می‌آید که نشان‌دهنده تعداد انتخاب‌های داور iام است؛ پس از آن di عدد می‌آید که به ترتیب نشان‌دهنده انتخاب‌های این داور بر حسب اولویت است. ورودی‌ها زمانی تمام می‌شوند که عدد 0، به عنوان n وارد شود.

ورودی در تمرین مسابقه آشپزی

اعداد نمایشگر آشپزها کم‌تر مساوی 106 هستند.

 

خروجی

به ازای هر تست، یک خط چاپ کنید که شماره آشپزهای برنده در آن تست به صورت صعودی آمده است.

 

مثال

ورودی نمونه 1

4
3 5 2 1
3 12 5 2
2 1 2
3 2 1 5
2
3 3 2 1
3 2 3 1
0

 

خروجی نمونه 1

2
2 3

 

کد پایتون سوال تمرین مسابقه آشپزی

while True:
    n = int(input())
    if n == 0:
        break
    
    scores = {}
    
    for _ in range(n):
        votes = list(map(int, input().split()))
        d_i = votes[0]
        for i in range(1, d_i + 1):
            if votes[i] not in scores:
                scores[votes[i]] = 0
            if i == 1:
                scores[votes[i]] += 3
            elif i == 2:
                scores[votes[i]] += 2
            elif i == 3:
                scores[votes[i]] += 1
    
    max_score = max(scores.values())
    winners = [k for k, v in scores.items() if v == max_score]
    winners.sort()
    
    print(*winners)

 

منبع سوال: کوئرا

اگر نیاز به حل تمرین‌های دیگری از کوئرا دارید در بخش نظرات همین نوشته برای ما بنویسید.

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]