সমস্যা বিবরণ
বেসবল গেমের অপারেশন লিস্ট দেওয়া থাকে:
- ইন্টিজার — রাউন্ডের পয়েন্ট।
"+"— গত দুটি বৈধ রাউন্ডের যোগফল।"D"— গত বৈধ রাউন্ডের দ্বিগুণ।"C"— গত বৈধ রাউন্ড বাতিল (রিমুভ)।
উদাহরণ
ops = ["5","2","C","D","+"] → আউটপুট: 30
Round 1: 5 (sum=5), Round 2: 2 (sum=7), C: 2 বাতিল (sum=5), Round 3: D→10 (sum=15), Round 4: +→15 (sum=30)।
এলগরিদম (Stack)
stack = []।- প্রতিটি
opএর জন্য:"+"→stack.append(stack[-1] + stack[-2])।"D"→stack.append(stack[-1] * 2)।"C"→stack.pop()।- সংখ্যা →
stack.append(int(op))।
return sum(stack)।
পাইথন বাস্তবায়ন
class Solution:
def calPoints(self, ops):
stack = []
for op in ops:
if op == '+':
stack.append(stack[-1] + stack[-2])
elif op == 'D':
stack.append(stack[-1] * 2)
elif op == 'C':
stack.pop()
else:
stack.append(int(op))
return sum(stack)
ob = Solution()
print(ob.calPoints(["5","2","C","D","+"])) # 30
ইনপুট / আউটপুট
ইনপুট: ["5","2","C","D","+"] আউটপুট: 30