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

ফোল্ডার লগ থেকে হোম ফোল্ডারে ফেরার ন্যূনতম জাম্প বের করা

একটি লগ দেওয়া আছে যাতে ফোল্ডার নেভিগেশন পথ রয়েছে। সিম্বলগুলো:

  • "../" — পেরেন্ট ফোল্ডারে যান (রুটে থাকলে কিছুই হবে না)

  • "./" — বর্তমান ফোল্ডারে থাকুন

  • "x/" — x নামক চাইল্ড ফোল্ডারে যান

লগ অনুসরণ করে শেষে যে ফোল্ডারে পৌঁছাল, সেখান থেকে রুট ফোল্ডারে ফেরতে ন্যূনতম অপারেশন সংখ্যা বের করতে হবে।

ইনপুট: ["Dir1/", "Dir2/", "../", "Dir2/", "Dir3/", "./"] → আউটপুট: 3।

ফোল্ডার লগ থেকে হোম ফোল্ডারে ফেরার ন্যূনতম জাম্প বের করা

সমাধানের ধাপসমূহ (স্ট্যাক ব্যবহার)

  • stk := []

  • প্রতিটি item ∈ logs:

    • যদি item == "../" এবং len(stk) > 0: stk.pop()
    • যদি item != "./" এবং item != "../": stk.append(item)
    • অন্যথায়: continue
  • len(stk) রিটার্ন করুন

উদাহরণ (Python)

def solve(logs):
    stk = []
    for i in logs:
        if i == "../" and len(stk) > 0:
            stk.pop()
        elif i != "./" and i != "../":
            stk.append(i)
        else:
            continue
    return len(stk)

logs = ["Dir1/", "Dir2/", "../", "Dir2/", "Dir3/", "./"]
print(solve(logs))

ইনপুট

["Dir1/", "Dir2/", "../", "Dir2/", "Dir3/", "./"]

আউটপুট

3
  1. পাইথনে ট্রি থেকে একটি এজ কাট করে দুটি সাবট্রিের নোড ভ্যালু সামের পার্থক্য মিনিমাইজ করা

  2. পাইথনে ফেরিস হইল থেকে সর্বোচ্চ প্রফিট পাওয়ার ন্যূনতম রোটেশন বের করার প্রোগ্রাম

  3. পাইথনে ভালো পারফরমারদের ন্যূনতম বেতন বের করার প্রোগ্রাম

  4. পাইথনে লিস্ট থেকে N বড় এলিমেন্ট বের করা