링크
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
'코딩 테스트' 카테고리의 다른 글
[프로그래머스/JS] 없는 숫자 더하기 (0) | 2022.08.23 |
---|---|
[프로그래머스/JS] x만큼 간격이 있는 n개의 숫자 (0) | 2022.08.16 |
[프로그래머스/JS] 내적 (0) | 2022.07.30 |
[백준/JS] 2753번 윤년 (0) | 2021.08.18 |
[백준/JS] 9498번 시험 성적 (0) | 2021.08.11 |