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

গোডাউনে কতগুলো বক্স রাখা যায় তা বের করার পাইথন প্রোগ্রাম

মান लीজिए, আমাদের দুটি অ্যারে রয়েছে যাতে ইন্টিজার মান রয়েছে। একটি লিস্টে কিছু ইউনিট প্রস্থের বক্সের উচ্চতা রয়েছে এবং অন্য অ্যারেতে গোডাউনের ঘরগুলোর উচ্চতা রয়েছে। ঘরগুলো 0...n নম্বর দিয়ে নম্বর করা আছে, এবং ঘরগুলোর উচ্চতা গোডাউন অ্যারেতে তাদের রেসপেক্টিভ ইনডেক্সে দেওয়া আছে। আমাদের বের করতে হবে কতগুলো বক্স গোডাউনের ভিতর ঠেলে দেওয়া যায়। কিছু বিষয় মনে রাখতে হবে:

  • বক্সগুলো একে অপরের ওপর রাখা যাবে না।

  • বক্সগুলোর অর্ডার পরিবর্তন করা যাবে।

বক্সগুলো গোডাউনের যেকোনো পাশ থেকে (বাম বা ডান) ঢুকানো যাবে। যদি কোনো বক্স ঘরের উচ্চতαιο চেয়ে বেশি উঁচু হয়, তবে সেই বক্স এবং তার ডান পাশের সকল বক্স গোডাউনের ভিতর ঠেলে দেওয়া যাবে না।

তবে, যদি ইনপুট হয় boxes = [4, 5, 6], godown = [4, 5, 6, 7], তবে আউটপুট হবে 3। ইনপুট olarak দেওয়া তিনটি বক্সই গোডাউনে রাখা যাবে।

গোডাউনে কতগুলো বক্স রাখা যায় তা বের করার পাইথন প্রোগ্রাম

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

  • বক্সের লিস্টটি ডিসেন্ডিং অর্ডারে সর্ট করুন

  • l := 0

  • r := godown-এর সাইজ - 1

  • bi := 0

  • ret := 0

  • যখন bi < boxes-এর সাইজ এবং l <= r, তখন লুপ চালান:

    • যদি godown[l] > godown[r], তবে:
      • যদি boxes[bi] <= godown[l], তবে: ret := ret + 1, l := l + 1
      • অন্যথায়: যদি boxes[bi] <= godown[r], তবে: ret := ret + 1, r := r - 1
    • bi := bi + 1
  • ret রিটার্ন করুন

উদাহরণ (Python)

def solve(boxes, godown):
    boxes.sort(reverse=True)
    l, r = 0, len(godown) - 1
    bi, ret = 0, 0
    while bi < len(boxes) and l <= r:
        if godown[l] > godown[r]:
            if boxes[bi] <= godown[l]:
                ret += 1
                l += 1
            else:
                if boxes[bi] <= godown[r]:
                    ret += 1
                    r -= 1
        bi += 1
    return ret

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

ইনপুট

[4, 5, 6], [4, 5, 6, 7]

আউটপুট

3
  1. গোডাউনে বাম থেকে ডানে বক্স রাখার প্রোগ্রাম

  2. কতগুলো কিউব কাটা হবে সেটা বের করার প্রোগ্রাম

  3. পাইথনে বৃষ্টির পানি কতটুকু জমা রাখা যায় তা খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে ট্রিকে দুটি ট্রিতে ভাগ করার পদ্ধতির সংখ্যা খুঁজে বের করার প্রোগ্রাম