স্ট্যাক অপারেশন লিস্ট দেওয়া আছে: সংখ্যা (পুশ), POP, DUP (টপ ডুপ্লিকেট), + (টপ দুই যোগ), - (টপ দুই বিয়োগ: top - second)। সব অপারেশন পরিপালন করে টপ এলিমেন্ট বের করুন। ইনভ্যালিড অপারেশনে -১ রিটার্ন করুন।
ইনপুট উদাহরণ
ops = ["5", "2", "POP", "DUP", "3", "+", "15", "-"]
আউটপুট: 7
স্টেপ বাই স্টেপ
- Push 5, 2 → [5, 2]
- POP → [5]
- DUP → [5, 5]
- Push 3 → [5, 5, 3]
- + → [5, 8]
- Push 15 → [5, 8, 15]
- - → [5, 7] (15-8=7)
- টপ = 7
পাইথন কোড
def solve(ops):
stack = []
for i in ops:
if i.isnumeric():
stack.append(int(i))
elif len(stack) >= 1 and i == "POP":
stack.pop()
elif len(stack) >= 1 and i == "DUP":
p = stack.pop()
stack.append(p)
stack.append(p)
elif len(stack) >= 2 and i == "+":
a = stack.pop()
b = stack.pop()
stack.append(a + b)
elif len(stack) >= 2 and i == "-":
a = stack.pop()
b = stack.pop()
stack.append(a - b)
else:
return -1
return stack.pop()
# টেস্ট
print(solve(["5","2","POP","DUP","3","+","15","-"])) # 7
ব্যাখ্যা
স্ট্যাক বেসড এক্সপ্রেশন ইভ্যালুয়েশন। প্রতিটি অপারেশনের পূর্বশর্ত চেক করা হয় (যথেষ্ট এলিমেন্ট আছে কিনা)।