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

পাইথনে ভালো ভিউ পাওয়া বিল্ডিংগুলো খুঁজে বের করার প্রোগ্রাম


আমাদের একটি অ্যারে দেওয়া আছে যাতে বিভিন্ন বিল্ডিংর উচ্চতা রয়েছে। বিল্ডিংগুলো একটি লাইনে অবস্থিত, এবং একটি বিল্ডিংর ভালো ভিউ থাকে যদি সেটি অন্য কোনো উচ্চতর বিল্ডিং দ্বারা অবরুদ্ধ না হয়। তাই উচ্চতা ধারণকারী অ্যারে দেওয়া থাকলে, আমাদের এমন বিল্ডিংগুলো বের করতে হবে যাদের ভিউ অন্য কোনো উচ্চতর বিল্ডিং দ্বারা বাধা পায় না। অ্যারে থেকে সেই ইন্ডেক্সগুলো রিটার্ন করতে হবে যেগুলো শর্ত পূরণ করে।

উদাহরণস্বরূপ, ইনপুট height = [5, 6, 8, 7] হলে আউটপুট হবে [2, 3]। অ্যারে ইন্ডেক্স ০ এবং ১-এর বিল্ডিংগুলো ইন্ডেক্স ২-এর বিল্ডিং দ্বারা অবরুদ্ধ। ইন্ডেক্স ২ এবং ৩-এর বিল্ডিংগুলো বাধা পায় না কারণ উচ্চতর বিল্ডিংটি (পজিশন ২) ছোট বিল্ডিংটির (পজিশন ৩) পেছনে অবস্থিত।

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

  • res := একটি নতুন লিস্ট

  • h := 0

  • i = heights-এর আকার - 1 থেকে -1 পর্যন্ত ১ কমানো হারে লুপ চালান:

    • যদি heights[i] > h হয়, তবে:

      • i-কে res-এর শেষে যোগ করুন

      • h := heights[i]

  • res-এর রিভার্স রিটার্ন করুন

উদাহরণ

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

def solve(heights):
    res, h = [], 0
    for i in range(len(heights)-1, -1, -1):
        if heights[i] > h:
            res.append(i)
            h = heights[i]
    return res[::-1]

print(solve([5, 6, 8, 7]))

ইনপুট

[5, 6, 8, 7]

আউটপুট

[2, 3]
  1. পাইথনে নাগরিকদের মার্কেট এক্সেসের জন্য মিনিমাম খরচ বের করা

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

  3. পাইথনে গ্রাফের ব্রিজ এজ বা বিচ্ছিন্নকারী প্রান্ত নির্ণয়

  4. পাইথনে কার্যকর অধ্যয়ন পদ্ধতি নির্ণয়