কম্পিউটার টিউটোরিয়াল

Python দিয়ে সর্বোচ্চ কয়েন পাওয়ার প্রোগ্রাম


মান লাগিয়ে, 3*n সংখ্যক কয়েনের পাইল আছে, যেগুলোর আকার ভিন্ন। তিনজন খেলাড় একটি খেলা খেলছে:

  • প্রতিটি ধাপে, খেলাড় ১ যেকোনো ৩টি কয়েনের পাইল সিলেক্ট করবে।
  • তার পছন্দে, খেলাড় ২ সর্বোচ্চ কয়েন ওয়ালা পাইল নেবে।
  • খেলাড় ১ পরের সর্বোচ্চ কয়েন ওয়ালা পাইল নেবে।
  • খেলাড় ৩ শেষ পাইলটি নেবে।
  • কয়েনের পাইল না থাকা পর্যন্ত এই ধাপগুলো পুনরাবৃত্তি করুন।

এখন যদি piles নামে একটি ইন্টিজার অ্যারে থাকে যেখানে piles[i] হল i-তম পাইলের কয়েনের সংখ্যা, তবে আমাদের খেলাড় ১ কতটা সর্বোচ্চ কয়েন পেতে পারে তা বের করতে হবে।

যেমন, ইনপুট piles = [2,4,1,2,7,8] হলে, আউটপুট হবে 9 কারণ প্রথমে আমরা (2,7,8) ট্রিপলেট সিলেক্ট করতে পারি, তারপর খেলাড় ২ ৮ নেবে, খেলাড় ১ ৭ নেবে এবং ২ খেলাড় ৩-র জন্য। আবার (1,2,4) ট্রিপলেট সিলেক্ট করলে, খেলাড় ২ ৪ নেবে, খেলাড় ১ ২ নেবে এবং বাকি ১ খেলাড় ৩-র জন্য। বর্তমানে খেলাড় ১-র पास ৭+২ = ৯ কয়েন, যা সর্বোচ্চ।

এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব:

  • piles লিস্টটি সর্ট করুন
  • ans := 0
  • piles-এর আকার ০ না হওয়া পর্যন্ত:
    • ans := ans + piles[-2] (দ্বিতীয় শেষ এলিমেন্ট)
    • piles[-2] ডিলিট করুন
    • piles[-1] ডিলিট করুন
    • piles[0] ডিলিট করুন
  • ans রিটার্ন করুন

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন:

উদাহরণ

def solve(piles):
    piles.sort()
    ans = 0
    while(len(piles)!=0):
        ans = ans + piles[-2]
        del piles[-2]
        del piles[-1]
        del piles[0]
    return ans
piles = [2,4,1,2,7,8]
print(solve(piles))

ইনপুট

[2,4,1,2,7,8]

আউটপুট

9

  1. পাইথনে ভারতীয় মুদ্রা দিয়ে n টাকা তৈরির উপায়ের সংখ্যা বের করা

  2. পাইথনে n ডিস্টিংচ নোড দিয়ে সম্ভাব্য BST-এর সংখ্যা বের করা

  3. পাইথন প্রোগ্রাম: map ফাংশন ব্যবহার করে সর্বোচ্চ ১-এর সারি খুঁজে বের করা

  4. পাইথন প্রোগ্রাম: map ফাংশন ব্যবহার করে সর্বোচ্চ ১-এর সারি খুঁজে বের করা (Duplicate)