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

পাইথনে সর্বোচ্চ জনসংখ্যা বছরের আগমো নির্ণয়


একটি টেবিল দেওয়া আছে যার দুটি কলাম (birth, death) - প্রতিটি সারি i-তম ব্যক্তির জন্ম ও মৃত্যু বছর নির্দেশ করে। y বছরের জনসংখ্যা হলো y বছরে কতজন জীবিত ছিল। i-তম ব্যক্তি y বছরে গণনা হবে যদি y ∈ [birth_i, death_i - 1] হয় (মৃত্যু বছরে তাদের গণনা করা হয় না)। আমাদের কাজ হলো সর্বোচ্চ জনসংখ্যা থাকা সবচেয়ে প্রাচীন বছর বের করা।

যেমন, ইনপুট:

BirthDeath
19702010
19602020
19401970

আউটপুট: 1960 (কারণ ১৯৬০ সালে সর্বোচ্চ ২ জন জীবিত ছিল)।

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

  • d := একটি ম্যাপ (ডিফল্ট ০)
  • res := [2051, 0] (year, max_population)
  • matrix-এর প্রতিটি (YOB, YOD) জোড়ার জন্য:
    • year = YOB থেকে YOD-1 পর্যন্ত লুপ:
      • d[year] += 1
      • যদি d[year] >= res[1] হয়:
        • যদি d[year] > res[1], তবে res := [year, d[year]]
        • অন্যথায় res := [min(year, res[0]), res[1]]
  • res[0] ফেরত দিন।

উদাহরণ

from collections import defaultdict

def solve(matrix):
    d = defaultdict(int)
    res = [2051, 0]
    for YOB, YOD in matrix:
        for year in range(YOB, YOD):
            d[year] += 1
            if d[year] >= res[1]:
                if d[year] > res[1]:
                    res = [year, d[year]]
                else:
                    res = [min(year, res[0]), res[1]]
    return res[0]

matrix = [[1970,2010],[1960,2020],[1940,1970]]
print(solve(matrix))

ইনপুট

[[1970,2010],[1960,2020],[1940,1970]]

আউটপুট

1960

  1. পাইথনে kটি একই দৈর্ঘ্যের রিবন বানাতে সর্বোচ্চ দৈর্ঘ্য বের করার প্রোগ্রাম

  2. Python-এ সর্বোচ্চ বিল্ডিং হাইট বের করার প্রোগ্রাম

  3. পাইথন ব্যবহার করে সর্বোচ্চ সম্ভাবনার পথ খুঁজে বের করার প্রোগ্রাম

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