ধরুন, আমাদের একটি রোটারি ডায়াল দেওয়া হয়েছে যাতে সমস্ত ছোট হাতের ইংরেজি বর্ণমালা রয়েছে। ডায়ালের সাথে এপ্রিন্টার সংযুক্ত থাকে এবং রোটারি ডায়ালের পয়েন্টারে যেটি 3 সেকেন্ডের জন্য থাকে, তা মুদ্রিত হয়। রোটারি ডায়াল প্রাথমিকভাবে 'a' অক্ষরে থাকে এবং যখনই এটি একটি অক্ষর মুদ্রণ করে তখন এটি প্রাথমিক অবস্থানে পুনরায় সেট হয় না। আমাদের একটি স্ট্রিং দেওয়া হয়েছে এবং আমাদের দেওয়া স্ট্রিংটি প্রিন্ট করতে হবে। যখনই আমরা ডায়ালটিকে অন্য অক্ষরে নিয়ে যাই, তখন এক পরিমাণ ঘূর্ণন ঘটে। প্রদত্ত স্ট্রিং 's' প্রিন্ট করার জন্য আমাদের মোট কত পরিমাণ ঘূর্ণন প্রয়োজন তা খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট s ="হাতি" এর মত হয়, তাহলে আউটপুট হবে 63।
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
t := 'a' res := 0 for initialize i := 0, when i < size of s, update (increase i by 1), do: res := res + minimum of (|t - s[i]|, 26 - |t - s[i]|) t := s[i] return res
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; #define N 100 int solve(string s) { char t = 'a'; int res = 0; for(int i = 0; i < s.size(); i++){ res += min(abs(t - s[i]), 26 - abs(t - s[i])); t = s[i]; } return res; } int main() { string s = "elephant"; cout<< solve(s); return 0; }
ইনপুট
"elephant"
আউটপুট
63