문제
풀이 코드
function solution(price, money, count) {
let total = 0;
for (let i = 1; i <= count; i++)
total += price * i
return total - money < 0 ? 0 : total - money
}
풀이 과정
간단하게 풀어냈다.
처음 가격 * 1 + 처음 가격 * 2 ... 처음 가격 * n
으로 계산하면 된다고 생각하여 for 문을 돌려 구현했다.
최종적으로 구한 값 - 소지한 돈 이 음수면, 돈이 모자르지 않기 때문에 0을 반환, 그렇지 않으면 차이값을 반환했다.
다른사람의 풀이
function solution(price, money, count) {
const tmp = price * count * (count + 1) / 2 - money;
return tmp > 0 ? tmp : 0;
}
이분을 for 문을 돌리지 않았고, 가우스 공식을 이용하셨다.
가우스 공식이란
1 ~ n 까지의 합을 구할때,
(n * (n + 1)) / 2
를 하면 합을 알수있다는 공식이다.
따라서
count * (count + 1) / 2 에다가, 처음의 가격 Price 를 곱해
price * count * (count + 1) / 2 를 수행한다.
공식숙지의 중요성