맨 처음 월요일에는 1달러를 저축하고 그 뒤로는 하루가 지날 때 마다 1달러가 추가된 금액을 저금하며, 돌아오는 월요일은 지난주 월요일보다 1달러를 더한 금액을 저금할 때 얼마를 저금하는지 묻는 문제. 몫과 나머지 둘 다 등차수열의 합으로 나타낼 수 있다.
주어진 날짜를 7로 나눠서 몫과 나머지를 구한 뒤 초기값, 횟수, 증분을 구해 식에 넣으면 된다. 몫의 경우 초기값 28(1~7까지의 합), 횟수는 구한 몫, 증분은 7로 넣으면 된다. 나머지의 경우 초기값은 몫+1, 횟수는 나머지, 증분은 1 이다.
어렵지않게 통과할 수 있었다.
function totalMoney(n: number): number {
const val = Math.floor(n / 7)
const rest = n % 7
const result1 = getArithmeticSequenceSum(28, val, 7)
const result2 = getArithmeticSequenceSum(val + 1, rest, 1)
return result1 + result2
};
function getArithmeticSequenceSum(a: number, n: number, d: number) {
return (n * ( (2 * a) + (n - 1) * d)) / 2
}
