calculateYears.js (7kyu 31)

Codewars 알고리즘 풀이


Problem

  • Mr.Scrooge has a sum of money ‘p’ that wants to invest, and he wants to know how many years ‘y’ this sum has to be kept in the bank in order for this sum of money to amount to ‘d’.
    • Mr.Scrooge는 투자하고자 하는 금액 ‘p’를 가지고 있고, 이 금액이 ‘d’에 이르기 위해, 몇 년 동안 ‘y’를 보관해야 하는지 알고 싶어 한다.
  • The sum is kept for ‘y’ years in the bank where interest ‘i’ is paid yearly, and the new sum is re-invested yearly after paying tax ‘t’.
    • 매년 이자 ‘i’가 지급되는 은행에서는, ‘y’년 동안 세금 ‘t’를 지불한 후, 매년 재투자된다.
  • Your task is to complete the method provided and return the number of years ‘y’ as a whole in order for Mr.Scrooge to get the desired sum.
    • Mr.Scrooge가 원하는 금액을 얻을 수 있도록 ‘y’년을 반환해라.


principal: 원금

interest: 이자

tax: 세금

desired: 희망하는 금액

y: 해, 1년


Solution 01

function calculateYear(principal, interest, tax, desired) {
  let years = 0;
  
  while (principal < desired) {
    principal += principal * interest * (1 - tax);
    years++;
  }
  return years;
}

calculateYear(1000, 0.05, 0.18, 1000);  // 0
calculateYear(1000, 0.05, 0.18, 1100);  // 3


Solution 02

function calculateYear(principal, interest, tax, desired) {
  for (var years = 0; principal < desired; years++) {
    principal += principal * interest * (1 - tax);
  }
  return years;
}

calculateYear(1000, 0.05, 0.18, 1000);  // 0
calculateYear(1000, 0.05, 0.18, 1100);  // 3