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

পাইথনে কুলডাউন গ্যাপ সহ টাস্ক কমপ্লিট করার ন্যূনতম সময় বের করা

টাস্ক লিস্ট tasks (প্রতিটি আইটেম একটি টাস্ক টাইপ) এবং কুলডাউন k দেওয়া আছে। প্রতিটি টাস্ক ১ यুনিট টাইম নেয়। একই টাইপের দুটি টাস্কের মাঝপথে কমপক্ষে k یুনিট গ্যাপ থাকতে হবে। মোট কত টাইম লাগবে বের করুন।

ইনপুট উদাহরণ

tasks = [0, 1, 1, 2]
k = 2

আউটপুট: 6

ব্যাখ্যা

সিকোয়েন্স: 0 (টাইম ০), 1 (টাইম ১), wait (টাইম ২), wait (টাইম ৩), 1 (টাইম ৪), 2 (টাইম ৫) → মোট ৬ টাইম স্লট।

অ্যালগরিদম

  1. tick = করেন্ট টাইম, slot = ডিকশনারি (টাস্ক টাইপ -> নেক্সট অবেলেবল টাইম)।
  2. প্রতিটি টাস্কের জন্য: যদি slot[t] > tick হয়, তবে tick = slot[t] (পροতিক্ষা)।
  3. tick++ (টাস্ক এক্সিকিউট)।
  4. slot[t] = tick + k (नेक্সট অবেলেবল টাইম আপডেট)।

পাইথন কোড

def solve(tasks, k):
    tick = 0
    slot = {}
    for t in tasks:
        tf = slot.get(t)
        if tf is not None and tf - tick > 0:
            tick += tf - tick
        tick += 1
        slot[t] = tick + k
    return tick

# টেস্ট
print(solve([0, 1, 1, 2], 2))  # 6

ব্যাখ্যা

সিমুলেশন বেসড গ্রিডি অ্যালগরিদম। সময় জটিলতা O(n), স্পেস O(u) (u = উনিক টাস্ক টাইপ)।

  1. পাইথনে K টাস্ক ফিনিশ করার সর্বোচ্চ সময় খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে Kটি অনন্য ক্যারেক্টার সম্বলিত স্ট্রিং তৈরির জন্য ন্যূনতম পরিবর্তন সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে দেওয়া শর্ত অনুযায়ী সম্পন্ন হয়ে যাওয়া টাস্কের সংখ্যা বের করার প্রোগ্রাম

  4. পাইথনে একটি সংখ্যাকে অন্য সংখ্যায় রূপান্তর করার ন্যূনতম অপারেশন বের করার প্রোগ্রাম