Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 복리 예금이 목표 금액에 도달하는 날짜 계산하기


문제 정의

원금 amt > 0을 2021년 1월 1일에 예금하고, 연 이자율 p%를 360으로 나눈 만큼 매일 이자가 붙는다고 가정해 보겠습니다. 우리의 목표는 원금과 누적 이자의 합계가 원하는 금액 a0 이상이 되는 시점을 찾는 것입니다.

따라서 함수는 원금, 목표 금액, 연 이자율이라는 세 가지 매개변수를 받아, 금액이 목표치에 도달하는 날짜를 반환해야 합니다.

접근 방법

이 문제는 복리(compound interest) 방식으로 계산해야 합니다. 매일 발생한 이자가 다시 원금에 합쳐지고, 그 금액을 기준으로 다음 날 이자가 계산되기 때문입니다.

핵심 로직은 다음과 같이 정리할 수 있습니다.

  • 연 이자율을 일 이자율로 변환합니다. 퍼센트 값을 소수로 바꾸고 360으로 나누면 되므로 interest / 36000이 됩니다.
  • while 반복문으로 하루씩 진행하며, 현재 금액에 일 이자율을 곱한 이자를 계속 더합니다.
  • 현재 금액이 목표 금액 이상이 되면 반복을 종료하고, 경과한 일수를 시작 날짜에 더해 최종 날짜를 구합니다.

코드 구현

다음은 전체 코드입니다.

const principal = 100;
const amount = 150;
const interest = 2;
const findDate = (principal, amount, interest) => {
    const startingDate = new Date('2021-01-01')
    const dailyInterestRate = interest / 36000
    let startingMoney = principal
    let daysPassed = 0
    while (startingMoney < amount) {
        daysPassed++
        startingMoney += startingMoney * dailyInterestRate
    };
    startingDate.setDate(startingDate.getDate() + daysPassed)
    return startingDate.toISOString().split('T')[0]
};
console.log(findDate(principal, amount, interest));

코드 설명

  1. 초기 설정: 시작 날짜를 2021년 1월 1일로 지정하고, 연 이자율 2%를 일 이자율로 변환합니다. interest / 36000(2 / 100) / 360과 같은 의미입니다.
  2. 반복 계산: 현재 금액이 목표 금액보다 작은 동안 경과 일수를 1씩 늘리고, 금액에 일 이자율을 곱한 이자를 더해 복리 효과를 반영합니다.
  3. 날짜 산출: 경과 일수만큼 시작 날짜에 더한 뒤, toISOString()으로 ISO 형식 문자열을 만들고 'T'를 기준으로 분리해 YYYY-MM-DD 형태의 날짜만 반환합니다.

실행 결과

2040-12-26

원금 100을 연 이자율 2%로 일 단위 복리 적용하면 약 7,300일, 즉 약 20년이 지나야 150에 도달합니다. 그래서 결과가 2040년 12월 26일로 출력되는 것입니다. 이처럼 반복문과 Date 객체를 조합하면 복리 예금의 목표 달성 시점을 손쉽게 계산할 수 있습니다.