মান লাগিয়ে, আমাদের nটি বল্ব আছে একটি রুমে, যেগুলো 0 থেকে n-1 পর্যন্ত নম্বর দেওয়া আছে। আমাদের সেগুলো বাম থেকে ডানে এক সারিয়ে সাজাতে হবে। শুরুতে সব বল্ব অফ আছে (0-স্টেট)। আমাদের টার্গেট অ্যারে 't' দিয়ে কনফিগারেশন বানাতে হবে যেখানে t[i] = '1' মানে i-তম বল্ব অন, '0' মানে অফ। আমাদের একটি সুইচ আছে বল্বের স্টেট ফ্লিপ করার জন্য। ফ্লিপ অপারেশন নিচের মতো:
- যেকোনো বল্ব ইন্ডেক্স i সিলেক্ট করুন।
- i থেকে n-1 ইনডেক্স পর্যন্ত সব বল্ব ফ্লিপ করুন।
আমাদের টার্গেট বানাতে মিনিমাম কত ফ্লিপ লাগবে তা বের করতে হবে।
যেমন, ইনপুট t = "0101" হলে, আউটপুট হবে 3, যদি দ্বিতীয় বল্ব থেকে শুরু করি, তবে কনফিগারেশন হবে "0111", তারপর তৃতীয় থেকে "0100", তারপর শেষ বল্ব ফ্লিপ করে "0101" বানাবে।
এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব:
- count := 0
- x := '0'
- t-এ থাকা প্রতিটি i জন্য:
- যদি i != x হয়, তবে count := count + 1, x := i
- count রিটার্ন করুন
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন:
উদাহরণ
def solve(t):
count = 0
x = '0'
for i in t:
if i != x:
count += 1
x = i
return count
t = "0101"
print(solve(t))
ইনপুট
"0101"
আউটপুট
3