ধরুন একটি কনফারেন্সে দুই ধরনের লোক আছে। প্রথম প্রকারের লোকেরা নিরামিষভোজন পছন্দ করে, এবং অন্য প্রকারের লোকেরা আমিষভোজন পছন্দ করে। কিন্তু সেখানে সীমিত সংখ্যক প্যাকেট আছে, এবং নিরামিষাশীরা যদি আমিষের প্যাকেট পায় বা তার বিপরীতে; তারা সেই প্যাকেটটি নেবে না এবং তাদের পছন্দের একটি না পাওয়া পর্যন্ত অপেক্ষা করবে। সুতরাং, দুটি ভিন্ন ধরণের প্যাকেট এবং লোককে নিরামিষের জন্য 0 এবং আমিষের জন্য 1 হিসাবে চিহ্নিত করা হয়। এখন আমাদের দুটি অ্যারে দেওয়া হয়েছে, একটিতে 0 এবং 1 দ্বারা চিহ্নিত খাবারের প্যাকেটের n সংখ্যা রয়েছে এবং অন্য একটি অ্যারে যেখানে m সংখ্যক লোকের সারি রয়েছে এবং তাদের পছন্দগুলি 0 এবং 1 দ্বারা চিহ্নিত করা হয়েছে। সুতরাং, যদি একজন ব্যক্তি তাদের গ্রহণ না করেন পছন্দের প্যাকেট, তারা শেষে সারিতে পুনরায় প্রবেশ করে এবং তাদের পছন্দের প্যাকেটের জন্য অপেক্ষা করে। সুতরাং, আমাদের খাবারের প্যাকেট ছাড়া লোকের সংখ্যা খুঁজে বের করতে হবে যাতে আমরা তাদের পছন্দের প্যাকেটগুলি সাজাতে পারি।
সুতরাং, যদি ইনপুট মানুষের মত হয় =[0,1,1,0], প্যাকেট =[0, 1, 0, 0], তাহলে আউটপুট হবে 1।
তাই দু'জন নন-ভেজ খাবার পছন্দ করছেন এবং শুধুমাত্র একটি নন-ভেজ প্যাকেট রয়েছে। লাইনের প্রথম ব্যক্তি যিনি আমিষ পছন্দ করেন তিনি সেই প্যাকেটটি পান এবং অন্য ব্যক্তি অপেক্ষা করতে থাকেন কারণ অন্য কোন নন-ভেজ প্যাকেট নেই। সুতরাং, আউটপুট হল 1।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
temp_arr :=0 এবং 0
মান ধারণকারী একটি নতুন তালিকা -
মানুষের মধ্যে প্রতিটি ব্যক্তির জন্য, করুন
-
temp_arr[ব্যক্তি] :=temp_arr[ব্যক্তি] + 1
-
-
k :=0
-
যখন k <প্যাকেটের আকার, করুন
-
যদি temp_arr[প্যাকেট[k]]>0 হয়, তাহলে
-
temp_arr[প্যাকেট[k]] :=temp_arr[প্যাকেট[k]] - 1
-
-
অন্যথায়,
-
লুপ থেকে বেরিয়ে আসুন
-
-
k :=k + 1
-
-
প্যাকেটের রিটার্ন সাইজ - k
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(people, packets): temp_arr = [0,0] for person in people: temp_arr[person] += 1 k = 0 while k < len(packets): if temp_arr[packets[k]]>0: temp_arr[packets[k]]-=1 else: break k += 1 return len(packets) - k print(solve([0,1,1,0], [0, 1, 0, 0]))
ইনপুট
[0,1,1,0], [0, 1, 0, 0]
আউটপুট
1