ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이자율 계산하기
    algorithm 2018. 8. 1. 15:34
    반응형

    문제


    초기 대출금(price)과 매월 상환금(monthlyPayment), 상환기간(loanTerm)이 주어졌을 때 이자율을 계산하라. 단 상환기간은 월 단위로 주어지며 매월 이율은 연이율을 12로 나눈 것과 같다. 이자율은 1e-9 이하의 오차범위를 가져야 한다.



    입출력 예시


    입력 1)

    price = 6800

    monthlyPayment = 100

    loanTerm = 68


    출력 1)

    0


    입력 2)

    price = 2000

    monthlyPayment = 510

    loanTerm = 4


    출력 2)

    9.562054624620941



    풀이


    이자율을 미지수로 두고 매번 남은 잔액에 대해 생각해 보면


    잔액 *= 이자율/1200 + 1

    잔액 -= 월 상환금


    인 것을 알 수있다. 이자율에 구체적인 값을 넣고 오차범위 안에 드는 값을 구하면 리턴하는 함수를 만들면 답을 구할 수 있을 것이다. 이 때 이자율에 들어가는 값은 이분탐색을 통해 찾으면 속도를 줄일 수 있을 것이다.



    코드


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    public double interestRate(double price, double monthlyPayment, int loanTerm) {
        
        double balance;
        double ret = 50;
        double top = 100;
        double low = 0;
        
        while(true) {
            
            balance = price;
            
            for (int i = 0; i< loanTerm; i++) {
                balance *= ret/1200 + 1;
                balance -= monthlyPayment;
            }
            
            if (balance < 1e-9 && balance > -(1e-9)) {
                break;
            } else if (balance > 0) {
                top = ret;
                ret -= (ret-low)/2;
            } else {
                low = ret;
                ret += (top-ret)/2;
            }
            
        }
        
        return ret;        
    }
    cs


    반응형

    'algorithm' 카테고리의 다른 글

    N으로 표현  (1) 2019.02.28
    최소 국경  (0) 2018.08.02
    악수 문제(카달란 수)  (0) 2018.07.31
    기부금 최대값 찾기  (0) 2018.07.30
    배낭 문제(냅색 문제)  (0) 2018.07.29
Designed by Tistory.