본문 바로가기
Algorithm

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

by 랩린안 2022. 9. 25.
/*
문제 : 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지 구하시오
자료 : 
이용료는 price원
처음 가지고 있던 금액 money 
놀이기구의 이용 횟수 count 
조건 : 
놀이기구를 N 번 째 이용한다면 원래 이용료의 N배
금액이 부족하지 않으면 0을 return
계획 : 
처음 풀이에 적어뒀음

반성 :
좋은 방법들이 참 많군@!!

*/

const solution = (price, money, count) => {
  let sum = 0;
  // price + price*2 + price*3 + price * 4
  // 반복문으로 count만큼 더한 후  money에서 뺀다.
  for (let i = 1; i <= count; i++) {
    sum = sum + price * i;
  }
  return money - sum > 0 ? 0 : -(money - sum);
};

// 가우스 공식
const solution2 = (price, money, count) => {
  const tmp = (price * count * (count + 1)) / 2 - money;
  return tmp > 0 ? tmp : 0;
};

// Array.from
function solution3(price, money, count) {
  const expectedMoney = Array.from({ length: count }).reduce(
    (acc, _, idx) => (acc += (idx + 1) * price),
    0,
  );
  const gap = money - expectedMoney;

  return gap > 0 ? 0 : gap * -1;
}