ধরা যাক ratings নামক একটি তালিকা আছে যা কোডারদের পারফরম্যান্স স্কোর। ম্যানেজার প্রত্যেককে ১০০০ টাকা দিতে চান, কিন্তু যদি দুজন সন্নিহিত কোডার থাকে, ভালো পারফরমারকে কমপক্ষে ১০০০ টাকা বেশি দিতে হবে। ন্যূনতম মোট বেতন বের করতে হবে।
উদাহরণ: ratings = [1, 2, 5, 1] হলে আউটপুট 7000, কারণ বেতন [1000, 2000, 3000, 1000]।
সমাধানের ধাপসমূহ
- pay := ratings-এর আকারের তালিকা, সব ১ দিয়ে ভরা।
- i = 1 থেকে len(ratings)-1: যদি ratings[i] > ratings[i-1], pay[i] = pay[i-1] + 1
- i = len(ratings)-2 থেকে 0 পর্যন্ত: যদি ratings[i] > ratings[i+1], pay[i] = max(pay[i], pay[i+1] + 1)
- sum(pay) * 1000 ফেরত দিন।
উদাহরণ কোড
class Solution:
def solve(self, ratings):
pay = [1 for _ in ratings]
for i in range(1, len(ratings)):
if ratings[i] > ratings[i-1]:
pay[i] = pay[i-1] + 1
for i in range(len(ratings)-2, -1, -1):
if ratings[i] > ratings[i+1]:
pay[i] = max(pay[i], pay[i+1] + 1)
return sum(pay) * 1000
ob = Solution()
ratings = [1, 2, 5, 1]
print(ob.solve(ratings))
ইনপুট
[1, 2, 5, 1]
আউটপুট
7000