সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা দুটি নম্বর m ও n প্রথম ও دومা আর্গুমেন্ট হিসেবে নেবে।
ফাংশনটির কাজ হলো m- থেকে n টি ডিজিট রিমুভ করা যাতে m সম্ভবত সবচেয়ে ছোট সংখ্যা হয়। অবশেষে সংখ্যাটি রিটার্ন করবে।
উদাহরণ:
const m = '45456757'; const n = 3;
আউটপুট হবে:
const output = '44557';
আউটপুট ব্যাখ্যা:
৫, ৬, ৭ ডিজিটগুলো রিমুভ করে সবচেয়ে ছোট সংখ্যা পাওয়া গেছে।
উদাহরণ
কোডটি নিচের মতো (লালচী অ্যালগরিদম + স্ট্যাক):
const m = '45456757'; const n = 3; const removeDigits = (m, n, stack = []) => { let arr = m.split('').map(Number); for(let el of arr){ while (n && stack.length && el < stack[stack.length - 1]){ stack.pop(); --n; }; stack.push(el); }; let begin = stack.findIndex(el => el > 0); let end = stack.length - n; return (!stack.length || begin == -1 || begin == end) ? "0" : stack.slice(begin, end).join('').toString(); }; console.log(removeDigits(m, n)); কোড ব্যাখ্যা:
লালচী অ্যালগরিদম ও স্ট্যাক ব্যবহার করা হয়েছে। ইনপুট স্ট্রিংয়ের প্রতিটি ডিজিট el বাম থেকে ডানে প্রসেস করা হয়। স্ট্যাকে থেকে el-এর চেয়ে বড় ডিজিটগুলো পপ করে নিচ্ছে (সর্বোচ্চ n বার)। বামের পজিশনগুলো বেশি গুরুত্বপূর্ণ, তাই লালচী পদ্ধতিতে সেগুলো ছোট ডিজিট দিয়ে ফিল করা হয়। শেষে যদি n বাকি থাকে, তবে ডানের দিক থেকে রিমুভ করা হয়।
আউটপুট
কনসোলে আউটপুট:
44557