ধরুন আমাদের একটি লগ আছে যেখানে আমাদের ফোল্ডারে প্রবেশ করার পথ আছে, সেখানে বিভিন্ন চিহ্ন থাকতে পারে যেমন −
-
"../" :বর্তমান থেকে মূল ফোল্ডারে সরান। (যদি আমরা মূল ফোল্ডারে থাকি তবে অবস্থান পরিবর্তন করবেন না)।
-
"./" :বর্তমান ফোল্ডারে থাকুন৷
৷ -
"x/" :x নামের চাইল্ড ফোল্ডারে যান।
লগগুলি থেকে আমাদের শেষ ফোল্ডার থেকে ফিরে আসার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করতে হবে যেখানে আমরা মূল ফোল্ডারে থামি৷
সুতরাং, যদি ইনপুটটি লগের মত হয় =["Dir1/","Dir2/",../","Dir2/","Dir3/",."/"], তাহলে আউটপুট হবে 3 পি>
ছবিটি থেকে আমরা দেখতে পাচ্ছি আমাদের বাড়িতে পৌঁছতে তিনবার পিছিয়ে যেতে হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
stk :=একটি নতুন তালিকা
-
প্রতিটি আইটেমের জন্য আমি লগ ইন করি, করুন
-
যদি আমি "../" এর মত হয় এবং stk> 0 এর আকার হয়, তাহলে
-
stk
থেকে শেষ উপাদান মুছে দিন
-
-
অন্যথায় যখন আমি "./" এর মতো না এবং আমি "../" এর মতো না, তখন
-
stk
-এর শেষে i ঢোকান
-
-
অন্যথায়,
-
পরবর্তী পুনরাবৃত্তির জন্য যান
-
-
-
stk
-এ আইটেমের সংখ্যা ফেরত দিন
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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