function solution(price, money, count) {
// N번까지 사용할 때의 총 이용료
let toUse = 0;
for(let i = 1; i <= count; i++){
let N = price * i;
toUse += N;
}
// money는 내가 가진 돈
let gap = money - toUse;
// money가 사용료만큼 충분하다면 0 이상이다.
if(gap >= 0){
return 0;
} else {
return Math.abs(gap);
}
}
간단한 문제였다.
1부터 count까지 증가시키면서 N번 사용할 때까지의 총 사용료를 구한다.
내가 가진 돈인 money와 총 사용료 toUse를 빼서
0 이상이면 이용하는데 문제가 없으므로 0,
0보다 작으면 이용하는데 문제가 있으므로 차액만큼 반환한다.
여기서 차액은 음수로 표현되기 때문에 Math.abs()를 사용해서 부호를 제거해준다.
function solution(price, money, count) {
const tmp = price * count * (count + 1) / 2 - money;
return tmp > 0 ? tmp : 0;
}
문제에 주어진 예시를 보면
3,6,9,12...이런 식으로 증가하는 숫자를 더한다.
이 분은 가우스 공식을 활용하여 이를 해결하셨다.
n*(n+1) / 2
1 ~ n까지의 합을 나타내는 공식이다.
우리는 3,6,9,12...
즉 1 ~ n에 3을 곱해놓은 것과 같다.
이 분은 그 것을 표현하신 것이다. 정말 간단하게 총 합을 구하셨다.
그 외에는 필자의 로직과 같다. 조건문 처리는 삼항연산자를 사용하셨다.
아니면 등차수열의 합으로 해도 된다.
n*(a + l) / 2
n은 count
a는 첫 번째 숫자, l은 마지막 숫자를 의미한다.
예시는 3씩 증가하는 등차수열이므로, 이런 식의 표현도 가능하겠다.