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

পাইথনে ইন্টারভাল টাইম অনুযায়ী সর্বাধিক কোর্স নেওয়ার প্রোগ্রাম

ধরা যাক [start, end] ফর্ম্যাটে ইন্টারভালের একটি লিস্ট রয়েছে, যা একটি কোর্সের শুরু এবং শেষ সময় নির্দেশ করে। আমাদের সর্বাধিক কতগুলো কোর্স নেওয়া যায় তা বের করতে হবে, শর্ত হলো একবারে শুধু একটি কোর্স নেওয়া যাবে এবং নতুন কোর্সের শুরু সময় আগের কোর্সের শেষ সময়ের পরে হতে হবে।

উদাহরণ

ইনপুট: times = [[3, 6], [6, 9], [7, 8], [9, 11]]

আউটপুট: 3

ব্যাখ্যা: নেওয়া যাবে [[3, 6], [7, 8], [9, 11]]

সমাধানের ধাপসমূহ

  1. ইন্টারভালগুলো শেষ সময় (end) অনুযায়ী সর্ট করুন
  2. counter := 0, end := -1
  3. i = 0 থেকে len(times)-1 পর্যন্ত লুপ চালান
  4. যদি times[i][0] > end হয়, তবে:
    • counter := counter + 1
    • end := times[i][1]
  5. counter ফেরত দিন

পাইথন ইমপ্লিমেন্টেশন

class Solution:
    def solve(self, times):
        times.sort(key=lambda x: x[1])
        counter = 0
        end = -1
        for i in range(len(times)):
            if times[i][0] > end:
                counter += 1
                end = times[i][1]
        return counter

ob = Solution()
times = [
    [3, 6],
    [6, 9],
    [7, 8],
    [9, 11]
]
print(ob.solve(times))

ইনপুট

[[3, 6], [6, 9], [7, 8], [9, 11]]

আউটপুট

3
  1. পাইথনে সিঁড়ির ধাপ চড়ার উপায় গণনা করার প্রোগ্রাম (সর্বোচ্চ k বার 3 ধাপ)

  2. পাইথনে স্টক মার্কেটে একাধিকবার কেনা-বেচা করে সর্বাধিক লাভ বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রামে প্রাইম নাম্বার খুঁজে বের করার বিভিন্ন পদ্ধতির বিশ্লেষণ

  4. পাইথন প্রোগ্রাম: তিন সংখ্যার মধ্যে সর্বোচ্চ (Maximum of Three)