ধরা যাক একটি রোমান সংখ্যালিখন (Roman numeral) দেওয়া আছে; আমাদের এটিকে ইন্টিজার সংখ্যায় রূপান্তর করতে হবে। রোমান সংখ্যালিখন বাম থেকে ডানে সবচেয়ে বড় থেকে ছোট মানের সিম্বল দিয়ে লেখা হয়, শুধু একটি ব্যতিক্রম রয়েছে—একটি সিম্বলের এক কম মান প্রকাশ করার সময়।
রোমান সিম্বল ও মান
'M': 1000'D': 500'C': 100'L': 50'X': 10'V': 5'I': 1
উদাহরণ
ইনপুট: numeral = "MCLXVI"
আউটপুট: 1166
ব্যাখ্যা: M=1000, C=100 → 1100; L=50, X=10, VI=6 → 1166
সমাধানের ধাপসমূহ
- রোমান সিম্বল-মান ম্যাপ
dতৈরি করুন ans := 0,n := numeral-এর দৈর্ঘ্য- প্রতিটি ইন্ডেক্স
idxএবং ক্যারেক্টারcএর জন্যnumeral-এ:- যদি
idx < n-1এবংd[c] < d[numeral[idx+1]]হয়, তবেans := ans - d[c] - অন্যথায়,
ans := ans + d[c]
- যদি
ansফেরত দিন
পাইথন ইমপ্লিমেন্টেশন
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