ধরুন আমাদের একটি রোমান সংখ্যা আছে; আমাদের এটিকে সংখ্যায় রূপান্তর করতে হবে। আমরা জানি যে একটি রোমান সংখ্যা বাম থেকে ডানে সর্বশ্রেষ্ঠ থেকে সর্বনিম্ন পর্যন্ত প্রতীক দ্বারা প্রতিনিধিত্ব করা হয়, একমাত্র ব্যতিক্রম যখন একটি প্রতীকের চেয়ে কম প্রতিনিধিত্ব করে। কিছু রোমান সংখ্যাসূচক চিহ্নের অর্থ নিম্নরূপ:
-
'M':1000
-
'ডি':500
-
'সি':100
-
'L':50
-
'X':10
-
'V':5
-
'আমি':1
সুতরাং, যদি ইনপুটটি সংখ্যা ="MCLXVI" এর মত হয়, তাহলে আউটপুট হবে 1166, যেমন M =1000, C =100, মোট হল 1100, তারপর L =50, X =10, VI =6 তাই মোট হল 1166।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
উপরে উল্লিখিত হিসাবে সংখ্যা তালিকা নিন
-
উত্তর :=0
-
n :=সংখ্যার আকার
-
প্রতিটি সূচক idx এবং মান c সংখ্যার জন্য, করুন
-
যদি idx
-
উত্তর :=উত্তর - d[c]
-
-
অন্যথায়,
-
ans :=ans + d[c]
-
-
-
উত্তর ফেরত দিন
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class Solution: def solve(self, numeral): d = {"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1} ans = 0 n = len(numeral) for (idx, c) in enumerate(numeral): if idx < n - 1 and d[c] < d[numeral[idx + 1]]: ans -= d[c] else: ans += d[c] return ans ob = Solution() numeral = "MCLXVI" print(ob.solve(numeral))
ইনপুট
"MCLXVI"
আউটপুট
1166