문제

 

풀이 코드

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 를 수행한다.

 

공식숙지의 중요성

+ Recent posts