코딩 테스트

[프로그래머스/JS] 부족한 금액 계산하기

jhlee_ 2022. 8. 12. 08:05

링크

https://school.programmers.co.kr/learn/courses/30/lessons/82612?language=javascript

풀이과정

이용금액은  이용횟수 * n의 합
모자라는 금액 return
부족하지 않으면 0을 return

소스코드

function solution(price, money, count) {
    var answer = 0;
    for (let i = 1; i <= count; i++) {
        answer += price * i;
    }
    return answer > money ? answer - money : 0;
}

다른 사람의 풀이

function solution(price, money, count) {
    const tmp = price * count * (count + 1) / 2 - money;
    return tmp > 0 ? tmp : 0;
}

가우스 공식을 이용한 풀이었다.
count만큼 이용. 각 횟수마다 price를 곱한 뒤 합한 값 = 이용금액이므로
가우스 공식 n * (n+1) / 2 를 활용하여
이용금액 = price * count * (count+1) / 2
내가 가진 금액을 빼야 모자라는 금액을 알수 있으므로
결과값 = price * count * (count+1) / 2 - money
결과값 = 필요한 금액 - money 이므로
결과값이 0보다 크면 조건에 따라 결과값을 return
결과값이 0보다 작으면 money가 큰 것이므로 필요한 금액 없음. 조건에 따라 0을 return

 

느낀점

가우스 공식 알고있었는데 이 방법은 전혀 생각하지 못했다. 나는 문제 보고 for문부터 생각했는데 놀랍다.
가우스 공식사용 해서 문제 푸는 방법을 훈련해서 좋았다.

 

 

728x90