Problem Statement
leetcode problem link
Brute Force [Accepted]
class Solution:
def totalMoney(self, n: int) -> int:
bank = 0
monday = 1
prev_day = 0
for i in range(n):
day_in_week = i % 7
if day_in_week == 0:
bank += monday
prev_day = monday + 1
monday += 1
else:
bank += prev_day
prev_day += 1
return bank
Editorial
Approach 1: Simulate
class Solution:
def totalMoney(self, n: int) -> int:
ans = 0
monday = 1
while n > 0:
for day in range(min(n, 7)):
ans += monday + day
n -= 7
monday += 1
return ans
Approach 2: Math
class Solution:
def totalMoney(self, n: int) -> int:
k = n // 7
F = 28
L = 28 + (k - 1) * 7
arithmetic_sum = k * (F + L) // 2
monday = 1 + k
final_week = 0
for day in range(n % 7):
final_week += monday + day
return arithmetic_sum + final_week